tkinter下拉多选列表
时间: 2023-08-29 22:14:00 浏览: 43
在 tkinter 中,可以使用 `Listbox` 组件来实现下拉多选列表的功能。以下是一个简单的示例代码:
```python
import tkinter as tk
class MultiListBox(tk.Frame):
def __init__(self, master, options):
super().__init__(master)
self.options = options
self.var = tk.StringVar(value=options)
self.listbox = tk.Listbox(self, listvariable=self.var, selectmode='multiple')
self.listbox.pack(side='left', fill='both', expand=True)
scrollbar = tk.Scrollbar(self, command=self.listbox.yview)
scrollbar.pack(side='right', fill='y')
self.listbox.config(yscrollcommand=scrollbar.set)
def get_selected(self):
return [self.options[i] for i in self.listbox.curselection()]
# 示例用法
options = ['Option 1', 'Option 2', 'Option 3', 'Option 4', 'Option 5']
root = tk.Tk()
root.geometry('300x200')
multi_listbox = MultiListBox(root, options)
multi_listbox.pack(side='top', fill='both', expand=True)
button = tk.Button(root, text='Get Selected', command=lambda: print(multi_listbox.get_selected()))
button.pack(side='bottom')
root.mainloop()
```
在此示例中,我们创建了一个 `MultiListBox` 类来封装 `Listbox` 组件。在 `__init__` 方法中,我们将选项列表和 `StringVar` 对象传递给 `Listbox`,并将 `selectmode` 参数设置为 `'multiple'`,以允许选择多个选项。我们还添加了一个滚动条,以便在选项列表太长时进行滚动。
`MultiListBox` 类还包括一个 `get_selected` 方法,该方法返回当前选定的选项列表。
在示例用法中,我们创建了一个包含一些选项的列表,并使用 `MultiListBox` 将其显示在主窗口中。我们还添加了一个按钮,当用户单击它时,将打印当前选定的选项列表。
运行示例代码,您将看到一个包含选项列表和一个“Get Selected”按钮的窗口。您可以单击所需的选项来选择它们,然后单击按钮以打印所选选项的列表。