在上一篇里面
简单的介绍了Tkinter中RadioButton的使用
接下来
一起看看ListBox的用法
代码以及注释如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #!/usr/bin/python # -*- coding: UTF-8 -*-
import tkinter as tk
# 创建窗体 window = tk.Tk() window.title('Tk Demo') window.geometry('350x300')
# 用来显示选中值的Label var1 = tk.StringVar() label = tk.Label(window, bg='yellow', width=4, textvariable=var1) label.pack()
# 获取Listbox选中值,并显示在Label上 def print_selection(): value = lb.get(lb.curselection()) var1.set(value)
b1 = tk.Button(window, text='print_selection', command=print_selection) b1.pack()
var2 = tk.StringVar()
# Listbox的值 var2.set((11, 22, 33, 44))
# 初始化一个Listbox,模式为单选模式 lb = tk.Listbox(window, listvariable=var2, selectmode=tk.SINGLE)
# 默认选中第一个,选中第0个到第0个,即第一个。 lb.select_set(0, 0) lb.pack()
window.mainloop()
|
执行代码,具体效果如下:
加强练习
通过选择不同的RadioButton按钮
展示不同的List列表内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 在上一段代码的 22行跟24行中间加入下面这段代码即可
# 定义两个函数,用来改变Listbox的值 def f1(): global var2 var2.set((11, 22, 33, 44))
def f2(): global var2 var2.set((1, 2, 3, 4))
# 定义两个单选框,根据选择的不同来触发f1()根f2()两个事件 var = tk.StringVar() var.set("A") r1 = tk.Radiobutton(window, text='option A', variable=var, value='A', command=f1) r1.pack() r2 = tk.Radiobutton(window, text='option B', variable=var, value='B', command=f2) r2.pack()
|
执行代码,具体效果如下:
当ListBox里面的数据量多的时候
可以使用Scrollbar做个滚动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/usr/bin/python # -*- coding: UTF-8 -*-
import tkinter as tk
window = tk.Tk() sb = tk.Scrollbar(window) sb.pack(side=tk.RIGHT, fill=tk.Y)
lb = tk.Listbox(window, yscrollcommand=sb.set)
for item in range(1, 20): lb.insert(tk.END, item) lb.pack()
sb.config(command=lb.yview)
window.mainloop()
|
执行代码,具体效果如下: