Python基础入门学习笔记 068 GUI的终极选择:Tkinter5

发布时间 2023-08-23 11:39:04作者: 一杯清酒邀明月

Listbox组件

如果需要提供选项给用户选择,单选可以用Radiobutton组件,多选可以用Checkbutton,如果提供的选项非常多,可以考虑使用Listbox组件。Listbox是以列表的形式显示出来,并支持滚动条操作。

实例1:

 1 from tkinter import *
 2 
 3 root = Tk()#创建主窗口
 4 
 5 theLB = Listbox(root,setgrid = True,selectmode=EXTENDED)#创建一个空列表
 6 theLB.pack()
 7 
 8 #往列表里添加数据
 9 for item in ["鸡蛋","鸭蛋","鹅蛋","李狗蛋"]:
10     theLB.insert(END,item)#每次在列表最后插入一个数据
11 
12 #创建一个按钮,ACTIVE表示当前选中的数据
13 theButton = Button(root,text="删除",command = lambda x = theLB:x.delete(ACTIVE))
14 theButton.pack()
15 
16 #theLB.delete(0,END)删除所有列表数据
17 
18 mainloop()

注:listbox.delete(0,END)可以删除列表中所有项目

实例2:添加height选项

 1 from tkinter import *
 2 
 3 root = Tk()#创建主窗口
 4 
 5 #height=11表示可以显示11个项目
 6 theLB = Listbox(root,setgrid = True,\
 7                 selectmode=BROWSE,height=11)#创建一个空列表,选择模式为单选
 8 theLB.pack()
 9 
10 #往列表里添加数据
11 for item in range(11):
12     theLB.insert(END,item)#每次在列表最后插入一个数据
13 
14 #创建一个按钮,ACTIVE表示当前选中的数据
15 theButton = Button(root,text="删除",command = lambda x = theLB:x.delete(ACTIVE))
16 theButton.pack()
17 
18 #theLB.delete(0,END)删除所有列表数据
19 
20 mainloop()

Scrollbar组件

实例1:

 1 from tkinter import *
 2 
 3 root = Tk()#创建主窗口
 4 
 5 sb = Scrollbar(root)
 6 sb.pack(side=RIGHT,fill=Y)
 7 
 8 lb = Listbox(root,yscrollcommand=sb.set)#创建一个空列表
 9 for i in range(1000):
10     lb.insert(END,i)
11 lb.pack(side=LEFT,fill=BOTH)
12 
13 sb.config(command = lb.yview)
14 
15 mainloop()

事实上,这是一个互联互通的过程。当用户操作滚动条时,滚动条响应滚动并同时通过Listbox组件的yview()方法滚动列表框里的内容;同样,当列表框中可视范围发生改变的时候,Listbox组件通过调用Scrollbar组件的set()方法设置滚动条的最新位置。

Scale组件

Scale组件主要是通过滑块来表示某个范围内的一个数字,可以通过修改选项设置范围以及分辨率(精度)

实例1:

1 from tkinter import *
2 
3 root = Tk()#创建主窗口
4 Scale(root,from_=0,to=42).pack()#创建铅锤方向滚动条
5 Scale(root,from_=0,to=200,orient=HORIZONTAL).pack()#创建水平方向滚动条
6 
7 mainloop()

 实例2:打印当前位置

 1 from tkinter import *
 2 
 3 def show():
 4     print(s1.get(),s2.get())#使用get()方法获取当前滑块的位置
 5 
 6 root = Tk()#创建主窗口
 7 s1 = Scale(root,from_=0,to=42)#创建铅锤方向滚动条
 8 s1.pack()
 9 s2 = Scale(root,from_=0,to=200,orient=HORIZONTAL)#创建水平方向滚动条
10 s2.pack()
11 
12 #创建一个按钮
13 Button(root,text="获取位置",command=show).pack()
14 
15 mainloop()

 实例3:通过resolution选项控制分辨率(步长),通过tickinterval选项设置刻度

 1 from tkinter import *
 2 
 3 def show():
 4     print(s1.get(),s2.get())#使用get()方法获取当前滑块的位置
 5 
 6 root = Tk()#创建主窗口
 7 #tickinterval表示设置刻度,即每隔多少显示一个刻度
 8 #length表示滚动条的长度所占的像素数
 9 #resolution用来控制分辨率(步长)
10 s1 = Scale(root,from_=0,to=42,tickinterval=5,length=200,\
11            resolution=5,orient=VERTICAL)#创建铅锤方向滚动条
12 s1.pack()
13 s2 = Scale(root,from_=0,to=200,tickinterval=10,\
14            length=600,orient=HORIZONTAL)#创建水平方向滚动条
15 s2.pack()
16 
17 #创建一个按钮
18 Button(root,text="获取位置",command=show).pack()
19 
20 mainloop()