使用 Tkinter 创建多选
先决条件: Python Tkinter – ListBox Widget,Python-tkinter 中的可滚动列表框
Tkinter 是一个易于阅读和理解的Python图形用户界面库。在 Tkinter 中,可以使用列表框小部件完成多项选择。通常,Listbox 以列表的形式显示不同的项目。列表框小部件提供列表中的一个或多个项目选择。列表框小部件中有许多选项可供用户选择多个选项。通过将选择模式选项指定为多个,用户可以选择多个选项。如果选择模式选项是单一的,那么用户只能选择一个选项。
列表框小部件的选择模式选项可以是单个、浏览、多个或扩展。
- single – 选择一行文本。
- 浏览- 这是一个默认选项,用户可以在其中选择一行文本。
- 多个- 选择多行文本而不从选项的第一行拖动到最后一行。
- 扩展- 用户可以选择并拖动相邻的多行文本。
句法 :
list_box = Listbox(root, options, ....)
示例 1: Python程序在列表框中显示有限的项目。
# Python program demonstrating
# Multiple selection in Listbox widget
from tkinter import *
window = Tk()
window.geometry('100x150')
# Choosing selectmode as multiple
# for selecting multiple options
list = Listbox(window, selectmode = "multiple")
# Widget expands horizontally and
# vertically by assigning both to
# fill option
list.pack(expand = YES, fill = "both")
# Taking a list 'x' with the items
# as languages
x = ["C", "C++", "Java", "Python", "R",
"Go", "Ruby", "JavaScript", "Swift"]
for each_item in range(len(x)):
list.insert(END, x[each_item])
# coloring alternative lines of listbox
list.itemconfig(each_item,
bg = "yellow" if each_item % 2 == 0 else "cyan")
window.mainloop()
输出 :
从上面的多选列表框中,用户可以选择多个选项。由于列表框中符合规定大小的项目有限,因此用户可以看到所有项目。但是,如果有更多的项目要显示给用户,那么所有项目都不会在列表框中立即可见。因此,如果要在列表中显示更多项目,则需要将滚动条附加到列表框。这可以通过 Listbox 中的yscrollcommand
选项(垂直滚动)来完成。
示例 2:显示带有附加滚动条的列表框的Python程序。
# Python program demonstrating Multiple selection
# in Listbox widget with a scrollbar
from tkinter import *
window = Tk()
window.title('Multiple selection')
# for scrolling vertically
yscrollbar = Scrollbar(window)
yscrollbar.pack(side = RIGHT, fill = Y)
label = Label(window,
text = "Select the languages below : ",
font = ("Times New Roman", 10),
padx = 10, pady = 10)
label.pack()
list = Listbox(window, selectmode = "multiple",
yscrollcommand = yscrollbar.set)
# Widget expands horizontally and
# vertically by assigning both to
# fill option
list.pack(padx = 10, pady = 10,
expand = YES, fill = "both")
x =["C", "C++", "C#", "Java", "Python",
"R", "Go", "Ruby", "JavaScript", "Swift",
"SQL", "Perl", "XML"]
for each_item in range(len(x)):
list.insert(END, x[each_item])
list.itemconfig(each_item, bg = "lime")
# Attach listbox to vertical scrollbar
yscrollbar.config(command = list.yview)
window.mainloop()
输出 :