Tkinter 创建多选下拉框 选中可在选框中显示内容并以逗号分割拼接成字符串显示在界面 点击按钮获取选中值 并弹窗显示选中值
时间: 2024-06-12 11:06:06 浏览: 125
input+select(multiple) 实现下拉框输入值
以下是一个示例代码,实现了创建多选下拉框,选中可在选框中显示内容并以逗号分割拼接成字符串显示在界面,点击按钮获取选中值并弹窗显示选中值的功能。
```python
import tkinter as tk
from tkinter import messagebox
class MultiListBox(tk.Frame):
def __init__(self, master, options):
super().__init__(master)
self.master = master
self.options = options
self.selected = []
self.create_widgets()
def create_widgets(self):
self.listbox = tk.Listbox(self, selectmode='multiple')
for option in self.options:
self.listbox.insert(tk.END, option)
self.listbox.bind('<<ListboxSelect>>', self.on_select)
self.listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
self.selected_label = tk.Label(self, text='Selected:')
self.selected_label.pack(side=tk.LEFT, padx=5)
self.selected_var = tk.StringVar()
self.selected_var.set('')
self.selected_box = tk.Entry(self, textvariable=self.selected_var, state='readonly')
self.selected_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
def on_select(self, event):
self.selected = [self.listbox.get(i) for i in self.listbox.curselection()]
self.selected_var.set(', '.join(self.selected))
def get_selected(self):
return self.selected
class App(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.master = master
self.create_widgets()
def create_widgets(self):
self.options = ['Option 1', 'Option 2', 'Option 3', 'Option 4', 'Option 5']
self.multi_listbox = MultiListBox(self, self.options)
self.multi_listbox.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
self.get_selected_button = tk.Button(self, text='Get Selected', command=self.get_selected)
self.get_selected_button.pack(side=tk.TOP, pady=5)
def get_selected(self):
selected = self.multi_listbox.get_selected()
messagebox.showinfo('Selected', ', '.join(selected))
if __name__ == '__main__':
root = tk.Tk()
app = App(root)
app.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
root.title('MultiListBox Example')
root.geometry('300x200')
root.mainloop()
```
在主函数中,创建了一个多选下拉框 MultiListBox 和一个获取选中值的按钮。当用户点击按钮时,调用 MultiListBox 的 get_selected 方法获取选中的值,并弹窗显示。MultiListBox 继承自 Frame 类,包含一个 Listbox 和一个 Entry,用于显示选中的值。在 Listbox 中,绑定了一个 '<<ListboxSelect>>' 事件,当用户选择 Listbox 中的选项时,会调用 on_select 方法更新选中的值并在 Entry 中显示。
阅读全文