Python: как установить атрибут TkInter из подмодуля? - PullRequest
0 голосов
/ 22 сентября 2018

Я использую TkInter для отображения диалогового окна с графическим интерфейсом в Python 2.7.

Я определил графический интерфейс в основном модуле и пытаюсь разделить логику на отдельный модуль, который я импортирую.

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''')

И теперь в диалоговом логическом модуле мне нужно установить состояние кнопки на NORMAL.

Я знаю, что мне нужно использовать

xxxx.ButtonProcess.configure(state=NORMAL)

НоМне не удалось определить секретный соус для «xxxx» для доступа к виджету кнопки TkI в родительском модуле из дочернего модуля.

Если ответ есть, я запутался в том, какGoogle это потому, что я не придумываю никаких результатов (все же кажется, что что-то, что каждый должен будет сделать в какой-то момент ;-))

Любые указатели будут оценены!

1 Ответ

0 голосов
/ 22 сентября 2018

Где-то в вашем коде вы создаете экземпляр 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...