为了账号安全,请及时绑定邮箱和手机立即绑定

当从其他文件导入类时,tkinter checkbutton 不显示正确的值

当从其他文件导入类时,tkinter checkbutton 不显示正确的值

慕婉清6462132 2023-06-20 13:57:47
我有一个主程序可以做一些很酷的事情,我目前正在设置一个“设置编辑器”来让用户更改一些 GUI 相关的东西和默认值。它从文本文件中读取值,该文件被正确读取并将它们保存到字典 self.propertiesDict 中。有些选项是开/关开关,所以我为它们使用了复选按钮。令我困惑的是以下行为:当我直接执行 settingsEditor.py(创建设置窗口的脚本)时,代码工作得很好。所有的检查按钮都设置为活动/真实。但是,当我在我的主程序中包含我的 settingsEditor 并调用它时,它创建正常但所有的复选按钮显示错误的值:False。我在这里阅读了很多主题以找到答案,但我认为我避免了最常见的错误:我使用 tk 变量tk 变量在按钮之前创建和设置变量不仅在本地范围内(前缀为 self.)如您所见,我尝试使用 IntVar 和 BooleanVar,但都无法正常工作。我使用 Visual Studio 进行调试,除了错误的显示结果外,我在逐行调试时看不出任何区别。我很高兴提出任何建议。很抱歉没有提供完整的 MWE,如果这里没有人可以帮助我,我会提供。settingsEditor.pyimport tkinter as tkfrom tkinter import ttk...class mySettingsEditor:    def __init__(self):        ...    def createGUI(self):        # Show main options on startup on/off        self.showOptionsVar = tk.IntVar()        self.showOptionsVar.set(str2int(self.propertiesDict['showMainOptionsExpanded']))        print(self.showOptionsVar.get())        self.checkBtn1 = tk.Checkbutton(Frame, text='Main Options Section', variable=self.showOptionsVar)        self.checkBtn1.grid(column=0,row=2)        # Show main STL section on startup on/off        self.showMainSTLVar = tk.BooleanVar()        self.showMainSTLVar.set(str2bool(self.propertiesDict['showMainSTLSectionExpanded']))        print(self.showMainSTLVar.get())        self.checkBtn2 = tk.Checkbutton(Frame, text='Main STL Section', variable=self.showMainSTLVar)        self.checkBtn2.grid(column=0,row=3)main.pyfrom settingsEditor import mySettingsEditor...settEditor = mySettingsEditor()这是它在单独执行时在 GUI 中的样子(左侧有打印输出的终端):这就是我在 main.py 中添加它时的结果。这些框未选中,但 .get() 告诉我这些值已正确分配给 tk 变量。
查看完整描述

1 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

为子窗口切换到 Toplevel() 解决了这个问题。多谢!



查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信