Python:如何从子模块设置TkInter属性?

2024-09-23 06:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用TkInter显示Python2.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按钮小部件的秘密

如果答案已经出来了,我很困惑如何用谷歌搜索它,因为我没有得到任何结果(但似乎每个人都需要在某个时候去做;-))

任何指点都将不胜感激


Tags: 模块importself定义tkinterconfiguretopgui
1条回答
网友
1楼 · 发布于 2024-09-23 06:31:38

在代码的某个地方,您正在创建一个processorDialog的实例。您需要保存该实例,并且该实例是您的“xxxx”:

xxxx = processorDialog()
...
xxxx.ButtonProcess.configure(state=NORMAL)

不过,纯粹从面向对象的角度来看,一个类修改另一个类的组件的内部状态有点不寻常。更好的解决方案是在processorDialog中创建一个方法来设置状态,并让代码调用它

示例:

class processorDialog:
    ...
    def enable_button():
        self.ButtonProcess.configure(state=NORMAL)

xxxx = processorDialog()
...
xxxx.enable_button()

最后要注意的是,您的命名约定似乎是反向的,这使得您的代码很难阅读。类应该以大写字母开头(例如:ProcessDialog),实例变量应该以小写字母开头(例如:self.buttonProcess

有关标准python约定的更多信息,请参见PEP8

相关问题 更多 >