Итак, я наткнулся на фрагмент кода графического интерфейса Python3 tkinter, и в нем нет ничего похожего, root = Tk()
кроме как ОН РАБОТАЕТ ! Я прочитал это, и это действительно полезно. Но у меня вопрос: если окно tk и интерпретатор запускаются при создании моего первого виджета, как я могу добавить больше виджетов в корень, не указывая его? ака. Что мне делать, если я хочу добавить больше виджетов в ту же программу / то же окно, поскольку у меня нет переменной, например, root
для хранения объекта корневого окна?
Кстати, был такой класс контроллера:
class Controller(tk.Tk):
def __init__ (self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
parentObj = tk.Frame(self)
self.allFrames = {}
...
Означает ли это, что фрейм parentObj является оконным / крайним слоем фрейма в этом приложении? Как мне понять это определение класса здесь? Для чего tk.Tk.__init__(self, *args, **kwargs)
здесь?
Controller
является подклассом tk.Tk
. Controller
идентичен, tk.Tk
но с улучшениями. Таким образом, выполнение something=Controller(...)
служит той же цели, что и something=tk.Tk()
.
Что мне делать, если я хочу добавить больше виджетов в ту же программу / то же окно,
Использовать self
как родительский, если внутри класса, использовать экземпляр класса, если снаружи.
class Controller(tk.Tk):
def __init__ (self, *args, **kwargs):
...
self.some_widget = tk.Label(self, ...)
... а также ...
root = Controller()
some_other_widget = tk.Label(root, ...)
Означает ли это, что фрейм parentObj является оконным / крайним слоем фрейма в этом приложении?
Нет. Самый дальний «слой» - это пример Controller
. Это корневое окно. parentObj
живет внутри этого окна.
Для чего
tk.Tk.__init__(self, *args, **kwargs)
здесь?
Это просто стандартный способ Python для подкласса инициализировать свой родительский класс.
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения