其它常用组件
1、单选按钮(Radiobutton)和复选框(Checkbutton)
(一)单选按钮Radiobutton、复选框Checkbutton
单选按钮Radiobutton、复选框Checkbutton是一组表示多种“选择”的组件。它们都只有两种状态:“选中/未选中”(ON/OFF),其属性和方法都类似。

在创建单选按钮Radiobutton或复选框Checkbutton时,要先声明一个选择状态变量:
chVarDis = tk.IntVar()
该变量记录单选按钮或复选框是否被勾选的状态,可以通过chVarDis.get()来获取其的状态,其状态值为int类型 勾选为1 未勾选为0。
另外,复选框Checkbutton对象的select()方法表示勾选,deselect()方法表示不勾选。
【例】编写一个小程序,功能是在顶层窗口上安放4个单选按钮
''' 编写一个小程序,功能是在顶层窗口上安放4个单选按钮,
标明“北京”“上海”“昆明”“大连”4座旅游城市,供用户选择
'''
import tkinter as tk
top=tk.Tk()
top.title('python GUI')
v=tk.StringVar()
v.set(0) #开始谁选中
lis=['北京','上海','昆明','大连']
def calb():
for m in lis:
if v.get()==m:
lab1=tk.Label(top,text='你想去的旅游城市是:'+v.get()+'!',
font=('宋体',10,'bold'),fg='red',bd=3,relief='ridge', height=2)
lab1.pack()
btn=tk.Button(top,text='退',width=5,height=1,fg='red',bg='white',bd=2,font=('隶书',14),command=quit)
btn.pack()
lab=tk.Label(top,text='请选择你希望的旅游城市:',font=('宋体',10,'bold'),fg='Red',relief='ridge',bd=3,height=2)
lab.pack(anchor='w')
radb0=tk.Radiobutton(top,text=lis[0],font=('Arial',10,'italic','bold'),fg='Red',relief='ridge',bd=2,width=7,value=lis[0],
command=calb,variable=v)
radb0.pack(anchor='w')
radb1=tk.Radiobutton(top,text=lis[1],font=('Arial',10,'italic','bold'),fg='Red',relief='ridge',bd=2,width=7,value=lis[1],
command=calb,variable=v)
radb1.pack(anchor='w')
radb2=tk.Radiobutton(top,text=lis[2],font=('Arial',10,'italic','bold'),fg='Red',relief='ridge',bd=2,width=7,value=lis[2],
command=calb,variable=v)
radb2.pack(anchor='w')
radb3=tk.Radiobutton(top,text=lis[3],font=('Arial',10,'italic','bold'),fg='Red',relief='ridge',bd=2,width=7,value=lis[3],
command=calb,variable=v)
radb3.pack(anchor='w')
top.mainloop()

【例7c】复选按钮
import tkinter as tk
top=tk.Tk()
top.title('python GUI')
lab1 = tk.Label(top, bg='white', width=20, height=2, text='当前无选择',
fg='red',bd=6,relief='ridge',font=('隶书',20))
lab1.grid(row=0,column=1)
var1 = tk.IntVar()
var2 =tk.IntVar()
def psel(): #这是回调函数
if (var1.get()==1) and (var2.get()==0): # 只选中选项1
lab1.config(text='你喜欢狗')
elif (var1.get()==1) and (var2.get()==1): # 选中选项1和2
lab1.config(text='你喜欢狗,且喜欢猫')
elif (var1.get()==0) and (var2.get()==0): # 两项都没选中
lab1.config(text='你不喜欢狗也不喜欢猫')
else: # 只选中选项2
lab1.config(text='你喜欢猫')
# 下面创建复选按钮
c1 = tk.Checkbutton(top, text='狗', width=4,height=2,bd=2, relief='ridge',variable=var1,
onvalue=1, # 选中该项时,把1放入var1
offvalue=0, #不选该项时,把0放入var1
command= psel, #回调
font=('Verdana',14,'bold'))
c1.grid(row=2,column=1)
c2 = tk.Checkbutton(top,text='猫', width=4,height=2,bd=2, relief='ridge',variable=var2,
onvalue=1, # 选中该项时,把1放入var1
offvalue=0, # 不选该项时,把0放入var1
command=psel,#回调
font=('Verdana',14,'bold') )
c2.grid(row=3,column=1)
top.mainloop()



【例8】 创建包含有单选按钮和复选框的窗体。
'''编写一个小程序,在顶层窗口上安放4个单选按钮和
一个复选按钮。读者可通过该程序了解初启时控件的哪个参数决定了谁被选中或不被选中。
'''
import tkinter as tk
top=tk.Tk()
top.title('python GUI')
rts =["鲜花","鼓掌","鸡蛋","点赞"]
cts =["Python","Java","c++"]
rt = tk.StringVar()
rt.set('0')
radio0 =tk.Radiobutton(top,variable = rt,value ='1',text=rts[0]+'Radio1')
radio0.pack()
radio1 = tk.Radiobutton(top,variable = rt,value ='2',text=rts[1]+'Radio2')
radio1.pack()
radio2 = tk.Radiobutton(top,variable = rt,value ='3',text=rts[2]+'Radio3')
radio2.pack()
radio3 = tk.Radiobutton(top,variable = rt,value ='4',text=rts[3]+'Radio4')
radio3.pack()
ct = tk.IntVar()
ct.set(2)
check = tk.Checkbutton(top,text='Checkbutton ',variable=ct,onvalue=1, offvalue=2)
check.pack()
top.mainloop()
k=int(rt.get())
p=int(ct.get())
print(rts[k])
print(cts[p])
(二) 标签框架、下拉列表框和滚动文本框
1. 标签框架LabelFrame
标签框架LabelFrame是一个带边框的容器,可以在该容器中放置其它组件。
标签框架LabelFrame的构造方法为:
ttk.LabelFrame(上一级容器, text="标签显示的文字内容")
2. 下拉列表Combobox
下拉列表Combobox是常用的一种选值组件,使用下拉列表时要先声明一个取值变量:
number = tk.StringVar()
该变量记录在下拉列表中预设的值中所选取的字符值,在下拉列表中所预设的值为一个元组。
下拉列表Combobox的构造方法为:
ttk.Combobox(容器, width=宽度, textvariable=取值变量)
3. 滚动文本框scrolledtext
滚动文本框scrolledtext是一个带滚动条的文本框,可以输入多行文本内容。其构造方法为:
scr = scrolledtext.ScrolledText(容器, width=文本框宽度, height=文本框高度)
【例4-9】标签框架、下拉列表、滚动文本框示例。
编写程序代码如下:




例如:
(1)安装MySQL数据库管理模块:
pip install pymysql
(2)安装图形处理库模块:
pip install pillow
(3)安装SomePackage模块:
pip install SomePackage
(4)卸载SomePackage模块:
pip uninstall SomePackage
(5)查看当前已经安装的模块:
pip list

