基于Tkinter实现带复选功能下拉列表的技术求助
实现带复选功能的邮件发件人下拉选框
别纠结那个装不上的ChecklistCombobox了,直接用tkinter自己搞个稳定的,代码示例如下:
import tkinter as tk from tkinter import ttk class CheckableDropdown(tk.Toplevel): def __init__(self, parent, options): super().__init__(parent) self.transient(parent) self.options = options self.selected = [] # 逐个添加发件人复选框 self.check_vars = [] for opt in options: var = tk.BooleanVar() self.check_vars.append(var) cb = ttk.Checkbutton(self, text=opt, variable=var, command=self.update_selected) cb.pack(anchor='w', padx=5, pady=2) # 确定选择按钮 confirm_btn = ttk.Button(self, text="确定", command=self.destroy) confirm_btn.pack(pady=5) def update_selected(self): self.selected = [self.options[i] for i, var in enumerate(self.check_vars) if var.get()] def handle_data_extraction(): # 获取选中的发件人,替换成你的数据提取逻辑 selected_senders = dropdown.selected if hasattr(dropdown, 'selected') else [] print("待提取数据的发件人:", selected_senders) # 这里调用你的数据提取函数,比如 extract_email_data(selected_senders) if __name__ == "__main__": root = tk.Tk() root.title("邮件数据提取工具") # 替换成你的实际发件人列表 sender_list = ["张三 <zhangsan@example.com>", "李四 <lisi@example.com>", "王五 <wangwu@example.com>", "赵六 <zhaoliu@example.com>"] # 弹出复选下拉框的触发按钮 def show_checklist(): global dropdown dropdown = CheckableDropdown(root, sender_list) dropdown.grab_set() select_btn = ttk.Button(root, text="选择发件人", command=show_checklist) select_btn.pack(pady=10) # 数据提取/下载按钮 extract_btn = ttk.Button(root, text="提取选中发件人数据", command=handle_data_extraction) extract_btn.pack(pady=5) root.mainloop()
简单说明:
- 用tk原生的
Toplevel做弹窗承载复选框列表,不需要额外安装第三方包 - 点击「选择发件人」弹出复选列表,选完点「确定」完成选择
- 点击「提取选中发件人数据」时,自动获取选中的发件人列表,直接对接你的数据提取函数即可
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

