○ 方法:利用函数中的 if-else 分支实现多项显示 from tkinter import * import tkinter def run(): if(CheckVar1.get()==0 and CheckVar2.get()==0 and CheckVar3.get()==0 and CheckVar4.get()==0): s = \'您还没选择任何爱好项目\' else: s1 = "足球" if CheckVar1.get()==1 else "" s2 = "篮球" if CheckVar2.get() == 1 else "" s3 = "游泳" if CheckVar3.get() == 1 else "" s4 = "田径" if CheckVar4.get() == 1 else "" s = "您选择了%s %s %s %s" % (s1,s2,s3,s4) lb2.config(text=s) root = tkinter.Tk() root.title(\'复选框\') lb1=Label(root,text=\'请选择您的爱好项目\') lb1.pack() CheckVar1 = IntVar() CheckVar2 = IntVar() CheckVar3 = IntVar() CheckVar4 = IntVar() ch1 = Checkbutton(root,text=\'足球\',variable = CheckVar1,onvalue=1,offvalue=0) ch2 = Checkbutton(root,text=\'篮球\',variable = CheckVar2,onvalue=1,offvalue=0) ch3 = Checkbutton(root,text=\'游泳\',variable = CheckVar3,onvalue=1,offvalue=0) ch4 = Checkbutton(root,text=\'田径\',variable = CheckVar4,onvalue=1,offvalue=0) ch1.pack() ch2.pack() ch3.pack() ch4.pack() btn = Button(root,text="OK",command=run) btn.pack() lb2 = Label(root,text=\'\') lb2.pack() root.mainloop() 3.5 列表框 与 组合框 3.5.1 列表框
(Listbox) 可供用户单选或多选所列条目以形成人机交互。列表框控件的主要方法见下面的表:
执行自定义函数时,通常使用“实例名.surselection()” 或 “selected” 来获取选中项的位置索引。由于列表框实质上就是将Python 的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来,而不必拘泥于可视化控件的方法。看下面的一个例子:实现列表框的初始化、添加、插入、修改、删除和清空操作,如下:
from tkinter import * def ini(): Lstbox1.delete(0,END) list_items = ["数学","物理","化学","语文","外语"] for item in list_items: Lstbox1.insert(END,item) def clear(): Lstbox1.delete(0,END) def ins(): if entry.get() != \'\': if Lstbox1.curselection() == (): Lstbox1.insert(Lstbox1.size(),entry.get()) else: Lstbox1.insert(Lstbox1.curselection(),entry.get()) def updt(): if entry.get() != \'\' and Lstbox1.curselection() != (): selected=Lstbox1.curselection()[0] Lstbox1.delete(selected) Lstbox1.insert(selected,entry.get()) def delt(): if Lstbox1.curselection() != (): Lstbox1.delete(Lstbox1.curselection()) root = Tk() root.title(\'列表框实验\') root.geometry(\'320x240\') frame1 = Frame(root,relief=RAISED) frame1.place(relx=0.0) frame2 = Frame(root,relief=GROOVE) frame2.place(relx=0.5) Lstbox1 = Listbox(frame1) Lstbox1.pack() entry = Entry(frame2) entry.pack() btn1 = Button(frame2,text=\'初始化\',command=ini) btn1.pack(fill=X) btn2 = Button(frame2,text=\'添加\',command=ins) btn2.pack(fill=X) btn3 = Button(frame2,text=\'插入\',command=ins) # 添加和插入功能实质上是一样的 btn3.pack(fill=X) btn4 = Button(frame2,text=\'修改\',command=updt) btn4.pack(fill=X) btn5 = Button(frame2,text=\'删除\',command=delt) btn5.pack(fill=X) btn6 = Button(frame2,text=\'清空\',command=clear) btn6.pack(fill=X) root.mainloop() 3.5.2 组合框
(Combobox) 实质上是带文本框的上拉列表框,其功能也将是Python 的列表类型数据可视化呈现,并提供用户单选或多选所列条目以形成人机交互。在图形化界面设计时,由于其具有灵活的界面,因此往往比列表框更受喜爱。但该控件并不包含在 tkinter 模块中,而是与 TreeView、Progressbar、Separator等控件一同包含在tkinter 的子模块ttk中。如果使用该控件,应先与from tkinter import ttk 语句引用ttk子模块,然后创建组合框实例: 实例名=Combobox(根对象,[属性列表])
指定变量var=StringVar(),并设置实例属性 textvariable = var,values=[列表…]。组合框控件常用方法有:获得所选中的选项值get()和获得所选中的选项索引current()。
看下面的一个例子:实现四则运算计算器,将两个操作数分别填入两个文本框后,通过选择组合框中的算法触发运算,如下: