我的核心目标是建立一个复选框对话框,记住用户的多项选择,并在用户单击“运行”后将它们提供给另一个功能。我一直在尝试的代码如下。这是一个非常基本的应用程序,它将文件中的列标题读取到 tkinter 对话框中并显示带有复选框的标题。该应用程序本身可以工作,但我试图通过这些 GUI 添加使其对用户更加友好。该文件每次都可以不同,因此对话框需要动态构建复选框。
我无法让“运行”按钮继续使用用户检查的项目的功能。谷歌一直建议为对话框创建一个类,但我之前真的从未构建过类,也不知道如何设置它。
至少以我想要的方式生成对话的非类原始代码。
def display_checkbox_dialog(column_headers):
root = Tk()
i = 1
for x in column_headers:
Checkbutton(root, text=x, variable=x).grid(row=i, sticky=W)
i += 1
Button(root, text='Quit', command=root.quit).grid(row=i + 1, sticky=W, pady=4)
Button(root, text='Run', command="run").grid(row=i + 2, sticky=W, pady=4)
mainloop()
类版本是一团糟,不会产生任何东西。最新错误是“NameError: name 'column_labels' is not defined”
class MyDialog(object):
def __init__(self, parent):
self.toplevel = tk.Toplevel(parent)
self.var = tk.StringVar()
self.column_labels = column_headers
label = tk.Label(self.toplevel, text="Pick the desired columns:")
label.pack(side="top", fill="x")
om.pack(side="top", fill="x")
Button(root, text='Quit', command=root.quit).grid(row=len(self.column_labels) + 1, sticky=W, pady=4)
Button(root, text='Run', command="run").grid(row=len(self.column_labels) + 2, sticky=W, pady=4)
def show(self):
value = self.var.get()
return value
def create_check(self):
i = 1
for x in self.column_labels:
Checkbutton(root, text=x, variable=x).grid(row=i, sticky=W)
i += 1
def on_click(self):
result = MyDialog(self).show()
self.label.configure(text="Run" % result)