0

我的核心目标是建立一个复选框对话框,记住用户的多项选择,并在用户单击“运行”后将它们提供给另一个功能。我一直在尝试的代码如下。这是一个非常基本的应用程序,它将文件中的列标题读取到 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)
4

0 回答 0