Python: 如何从子模块设置 TkInter 属性?
Python: how to set TkInter attribute from submodule?
我正在使用 TkInter 在 Python 2.7.
下显示 GUI 对话框
我已经在主模块中定义了 GUI,我尝试将逻辑拆分到我导入的单独模块中。
import sys
from Tkinter import *
import ttk
import dialoglogic
:
:
class processorDialog:
def _init__(self, top=None):
:
:
self.ButtonProcess = Button(top)
self.ButtonProcess.configure( state=DISABLED)
self.ButtonProcess.configure( text='''Start Process''')
现在在dialoglogic模块中,我需要将按钮的状态设置为NORMAL。
我知道我需要使用
xxxx.ButtonProcess.configure(state=NORMAL)
但我无法确定 "xxxx" 从子模块访问父模块中的 TkI 按钮小部件的秘诀。
如果答案在那里,我对如何Google感到困惑,因为我没有得出任何结果(但似乎每个人在某个时候都需要做的事情;-))
如有指点,将不胜感激!
在您的代码中某处您正在创建 processorDialog
的实例。您需要保存它,并且 that 是您的 "xxxx":
xxxx = processorDialog()
...
xxxx.ButtonProcess.configure(state=NORMAL)
不过,纯粹从 OO 的角度来看,一个 class 修改另一个 class 的组件的内部状态有点不寻常。更好的解决方案是在 processorDialog
中创建一个方法来设置状态,并让您的代码调用它。
示例:
class processorDialog:
...
def enable_button():
self.ButtonProcess.configure(state=NORMAL)
xxxx = processorDialog()
...
xxxx.enable_button()
最后一点,您的命名约定似乎倒退了,这使您的代码难以阅读。您的 class 应以大写字母开头(例如:ProcessDialog
),您的实例变量应以小写字母开头(例如:self.buttonProcess
)
有关标准 python 约定的详细信息,请参阅 PEP8
我正在使用 TkInter 在 Python 2.7.
下显示 GUI 对话框我已经在主模块中定义了 GUI,我尝试将逻辑拆分到我导入的单独模块中。
import sys
from Tkinter import *
import ttk
import dialoglogic
:
:
class processorDialog:
def _init__(self, top=None):
:
:
self.ButtonProcess = Button(top)
self.ButtonProcess.configure( state=DISABLED)
self.ButtonProcess.configure( text='''Start Process''')
现在在dialoglogic模块中,我需要将按钮的状态设置为NORMAL。
我知道我需要使用
xxxx.ButtonProcess.configure(state=NORMAL)
但我无法确定 "xxxx" 从子模块访问父模块中的 TkI 按钮小部件的秘诀。
如果答案在那里,我对如何Google感到困惑,因为我没有得出任何结果(但似乎每个人在某个时候都需要做的事情;-))
如有指点,将不胜感激!
在您的代码中某处您正在创建 processorDialog
的实例。您需要保存它,并且 that 是您的 "xxxx":
xxxx = processorDialog()
...
xxxx.ButtonProcess.configure(state=NORMAL)
不过,纯粹从 OO 的角度来看,一个 class 修改另一个 class 的组件的内部状态有点不寻常。更好的解决方案是在 processorDialog
中创建一个方法来设置状态,并让您的代码调用它。
示例:
class processorDialog:
...
def enable_button():
self.ButtonProcess.configure(state=NORMAL)
xxxx = processorDialog()
...
xxxx.enable_button()
最后一点,您的命名约定似乎倒退了,这使您的代码难以阅读。您的 class 应以大写字母开头(例如:ProcessDialog
),您的实例变量应以小写字母开头(例如:self.buttonProcess
)
有关标准 python 约定的详细信息,请参阅 PEP8