在与用户交互的过程成中,如果需要用户自己做出选择,可以使用列表框控件,下面的程序,我将创建一个应用,界面入下图所示
整个界面分为3部分
程序如下
import tkinter as tk
window = tk.Tk()
window.title('列表框') # 设置窗口的标题
window.geometry('200x240') # 设置窗口的大小
list_itmes = tk.StringVar()
list_itmes.set(('python', 'c++', 'java', 'php')) # 设置可选项
# 创建列表框
lb = tk.Listbox(window, listvariable=list_itmes)
lb.pack()
no_select = '没有选中任何选项'
def click_button():
"""
当按钮被点击时执行该函数
:return:
"""
select = lb.curselection()
print(len(select))
if len(select) == 0:
label_text.set(no_select)
else:
text = lb.get(select)
label_text.set('你选择了{text}'.format(text=text))
# 创建button
button = tk.Button(window,
text='显示所选', # 显示在按钮上的文字
width=15, height=2,
command=click_button) # 点击按钮时执行的函数
button.pack() # 将按钮锁定在窗口上
# 创建label用于显示所选择的列表框选项
label_text = tk.StringVar() #创建变量
label_text.set(no_select)
label = tk.Label(window,
width=15, height=2, # 标签长宽
textvariable=label_text # label控件将显示label_text的值
)
label.pack() # 将标签固定在窗口上
window.mainloop() # 启动窗口
代码很多,需要逐个部分进行讲解
list_itmes = tk.StringVar()
list_itmes.set(('python', 'c++', 'java', 'php')) # 设置可选项
# 创建列表框
lb = tk.Listbox(window, listvariable=list_itmes)
lb.pack()
在创建列表框时,设置listvariable参数,list_itmes变量里存储的是列表框里的可选项
def click_button():
"""
当按钮被点击时执行该函数
:return:
"""
select = lb.curselection()
print(len(select))
if len(select) == 0:
label_text.set(no_select)
else:
text = lb.get(select)
label_text.set('你选择了{text}'.format(text=text))
curselection()方法获取被选中的可选项的索引,以元组的形式返回,这里我先判断选中的内容是否为空,如果有选项被选中,则使用get方法获取选中的内容
label_text = tk.StringVar() #创建变量
label_text.set(no_select)
label = tk.Label(window,
width=15, height=2, # 标签长宽
textvariable=label_text # label控件将显示label_text的值
)
想要让label标签控件的文字内容动态变化,需要设置textvariable 参数,这里已经第二次用到tk.StringVar()创建对象,将textvariable设置为label_text,那么此后,你对label_text的值的修改,都将直接影响到标签上的文字显示。
QQ交流群: 211426309