Объекты добавляются не на то окно в tkinter
Я создал второе окно и при попытки добавления объектов на второе окно, они добавляются на первое. Что нужно сделать?
КОД:
import tkinter as ttk
from tkinter import *
from tkinter import messagebox as msgbox
class AddWin(ttk.Toplevel):
def __init__(self, parent):
super().__init__(parent)
# All elements
lbl = ttk.Label(text="TEST")
horizontal_scale = ttk.Scale(orient=HORIZONTAL, length=200, from_=1.0, to=100.0)
# Start settings
self.geometry("200x50")
self.title("Sets MMC")
self.resizable(True, True)
self.protocol("WM_DELETE_WINDOW", self.closing_win)
# Place elements
lbl.pack()
horizontal_scale.pack()
def closing_win(self):
if msgbox.askokcancel("Quit", "Do you want to save settings?"):
pass # Here's need be save settings
self.destroy()
class App(ttk.Tk):
def __init__(self):
super().__init__()
# All elements
btn = ttk.Button(text="OFF", command=lambda: print("I WORK"))
text_lbl = f"0p (pixels)"
lbl = ttk.Label(text=text_lbl)
sets_btn = ttk.Button(text="Settings", command=self.open_window)
# Start settings
self.geometry("200x75")
self.title("MMC")
self.resizable(True, True)
self.protocol("WM_DELETE_WINDOW", self.closing_app)
# Place elements
btn.pack()
lbl.pack()
sets_btn.pack()
def closing_app(self):
if msgbox.askokcancel("Quit", "Do you want to quit?"):
self.destroy()
def open_window(self):
add_win = AddWin(self)
add_win.grab_set()
if __name__ == "__main__":
app = App()
app.mainloop()
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
При создании виджетов необходимо передавать родительский элемент:
class AddWin(ttk.Toplevel):
def __init__(self, parent):
super().__init__(parent)
# All elements
lbl = ttk.Label(self, text="TEST") # Добавлен self
horizontal_scale = ttk.Scale(self, orient=HORIZONTAL, length=200, from_=1.0, to=100.0) # Добавлен self