尝试获取Checkbutton状态时,“module”对象没有属性错误

时间:2016-06-07 12:24:29

标签: python tkinter

我正在尝试获取redundancyCheckbutton的状态,以查看是否应该运行test.py脚本。正如现在一样,单击一个按钮后,run.py将触发并运行testSomething函数。每当我尝试使用.get()或类似的东西获取状态时,它会抛出模块对象没有属性错误。知道我做错了什么吗?另外,将if语句放在run.py文件或test.py文件中会更好吗?提前谢谢。

Tool.py

的相关行

类ToolGui(Frame):     def create_widgets(self):         self.redundancyChecked = IntVar()

    self.redundancyCheckbutton = Checkbutton(rightframe, onvalue=1, offvalue=0,  text="Run Script?", variable=self.redundancyChecked)

    self.redundancyCheckbutton.pack(side=TOP, pady=(5,0))

run.py

的相关行

类线程(threading.Thread):     def runC(self,varis):

    ####if checkbutton is checked, run this...could go here

    test.trySomething(workDir)

test.py

的相关行
import os
import sys
import subprocess


def trySomething(dir):
    import Tool
  ###or If statement could go here, not sure which would be better
    Tool.redundancyCheckbutton.config(state=DISABLED)

1 个答案:

答案 0 :(得分:0)

redundancyCheckbutton属于某个类实例的实例。我不知道什么课,因为你没有显示足够的代码。

可能导致问题的行(我假设,因为您没有显示实际的错误消息)是:

import Tool
Tool.redundancyCheckbutton.config(...)

在此上下文中,Tool是一个模块。此模块没有redundancyCheckbutton属性,就像错误消息告诉您的那样。同样,该属性属于对象,而不属于模块

最有可能的是,Tool中的某个地方定义了一个类。既然你没有说,为了这个答案,我会说它被命名为GUI。因此,您有一个模块Tool,其中包含一个类GUI。此类定义属性self.redundancyCheckbutton

创建该按钮的唯一方法是创建该类的实例。因此,在代码中的某个位置,您必须执行以下操作:

gui = GUI(...) # or maybe Tool.GUI(...)

因此,要访问redundancyCheckbutton,您必须使用gui.redundancyCheckbutton,因为它是对象的属性,它由类在工具模块中定义。