Я работаю над простым приложением, пытающимся использовать шаблон MVC. Проблема, которую я обнаружил (которую я предсказываю, является действительно глупой, но я потерял свою резиновую утку) состоит в том, что два приложения tkinter созданы, где я ожидаю только одно. Более того, второй экземпляр создан, но не виден, что изначально меня разозлило, поскольку я не знал, что он существует; -)
Пахнет для меня, как будто создается другой экземпляр Tk (), но не когда, где и почему.
![enter image description here](https://i.stack.imgur.com/PQrMw.png)
Когда я заменяю root = Main()
на root = tk.Tk()
в AppDelegte, все работает как шарм, и создается только одно окно приложения, как предназначен.
Приложение создано по следующему коду:
Делегат приложения
from controller.main import Main
root = Main()
root.mainloop()
Главный контроллер
import tkinter as tk
from tkinter import ttk
from view.actual_readings import ActualReadings
class Main(tk.Tk):
actual_readings = ActualReadings(None)
def __init__(self):
super().__init__()
main_frame = ttk.Frame(self, padding="25")
main_frame.grid(column=0, row=0)
self.actual_readings.master = main_frame
self.actual_readings.grid(column=0, row=0)
Просмотр показаний
from tkinter import *
from tkinter import ttk
class ActualReadings(ttk.Frame):
def __init__(self, master, **kwargs):
super().__init__(master, **kwargs)
header = ttk.Label(self, text="header text", font="TkFixedFont", padding="75 25 75 10")
current_value_lbl = ttk.Label(self, text="current value",
font="TkFixedFont")
current_value_val = ttk.Label(self, text="here comes reading", font="TkFixedFont")
header.grid(column=0, row=0, columnspan=2)
current_value_lbl.grid(column=0, row=1, sticky=E)
current_value_val.grid(column=1, row=1, sticky=W)