tkinter.ttk中绘制多选列表控件
在tkinter.ttk模块中,可以使用Checkbutton或Listbox等控件来实现多选列表。
下面是一个使用Checkbutton控件实现多选列表的例子:
import tkinter as tk
from tkinter import ttk
def get_selected_items():
selected_items = []
for i, var in enumerate(vars):
if var.get():
selected_items.append(items[i])
print("Selected items:", selected_items)
root = tk.Tk()
items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
vars = []
for item in items:
var = tk.IntVar()
vars.append(var)
checkbutton = ttk.Checkbutton(root, text=item, variable=var)
checkbutton.pack(anchor="w")
button = ttk.Button(root, text="Get Selected Items", command=get_selected_items)
button.pack()
root.mainloop()
在以上代码中,我们创建了一个包含5个选项的多选列表。首先,我们创建了一个items列表,其中包含了需要显示的每个选项。然后,我们使用IntVar()函数创建了一个变量(var),用于存储每个选项是否被选中的状态。将每个var对象添加到vars列表中。接下来,使用ttk.Checkbutton函数创建了一个Checkbutton控件,并将var变量和选项文本传递给该控件。通过逐一遍历vars列表,我们可以获取每个选项的状态。
最后,我们创建了一个按钮,当点击该按钮时,调用get_selected_items()函数。该函数会遍历vars列表,并将被选中的选项添加到selected_items列表中。然后,打印出选中的选项。
通过运行以上代码,我们可以在窗口中看到一个多选列表。当用户选择了一些选项后,点击"Get Selected Items"按钮,就可以在控制台上看到被选中的选项。
另外,我们也可以使用Listbox控件来实现多选列表。以下是一个使用Listbox控件的例子:
import tkinter as tk
from tkinter import ttk
def get_selected_items():
selected_items = []
for item in listbox.curselection():
selected_items.append(items[item])
print("Selected items:", selected_items)
root = tk.Tk()
root.geometry("200x300")
items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
listbox = tk.Listbox(root, selectmode="multiple")
listbox.pack(fill="both", expand=True)
for item in items:
listbox.insert("end", item)
button = ttk.Button(root, text="Get Selected Items", command=get_selected_items)
button.pack()
root.mainloop()
在以上代码中,我们创建了一个包含5个选项的Listbox控件。首先,我们使用tk.Listbox函数创建了一个Listbox控件,并设置selectmode参数为"multiple",以便可以选择多个选项。然后,使用listbox.insert("end", item)将每个选项添加到Listbox控件中。
接下来,我们创建了一个按钮,当点击该按钮时,调用get_selected_items()函数。该函数通过listbox.curselection()方法获取被选中的选项的索引,并根据索引获取相应的选项文本。
运行以上代码,我们可以看到一个带有可供选择的选项的Listbox控件。当用户选择了一些选项后,点击"Get Selected Items"按钮,就可以在控制台上看到被选中的选项。
以上例子展示了使用Checkbutton和Listbox控件实现多选列表的方法。可以根据实际需要选择其中一种方式来创建多选列表控件。
