Python图形化界面Tkinter(五)-ListBox

Python图形化界面Tkinter(五)-ListBox

在上一篇里面
简单的介绍了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()

执行代码,具体效果如下:

Python图形化界面Tkinter(五)-ListBox

https://trainoo.gitee.io/2018/06/14/Python-tkinter-ListBox/

作者

Trainoo

发布于

2018-06-14

更新于

2020-06-02

许可协议