Изменение текста элемента при нажатии на кнопку
Подскажите, пожалуйста, как сделать чтобы при нажатии кнопки btn1
окно toplevel
закрывается и при этом мне нужно чтобы title_info
изменил текст на var
из класса Top()
?
import customtkinter
class Top(customtkinter.CTkToplevel):
def __init__(self):
super().__init__()
self.put_widget()
self.var = "main_window"
def pass_to_main(self):
Main.Main.title_info.configure(text=self.var)
def put_widget(self):
self.btn1 = customtkinter.CTkButton(self, width=200, text="push", corner_radius=24,
font=("Arial", 18), command=self.pass_to_main)
self.btn1.grid(row=0, column=0, padx=20, pady=(20, 10), ipady=10, sticky="ewn")
class Frame(customtkinter.CTkFrame):
def __init__(self, master):
super().__init__(master)
self.put_widget()
def action_btn_signin(self):
Top()
def put_widget(self):
self.btn = customtkinter.CTkButton(self, text="open toplevel", command=self.action_btn_signin)
self.btn.grid(row=1, column=0, padx=20, pady=(10, 10), sticky="ew")
class Main(customtkinter.CTk):
def __init__(self):
super().__init__()
self.put_widget()
def put_widget(self):
self.title_info = customtkinter.CTkLabel(self, text="Docs")
self.title_info.grid(row=0, column=0, padx=10, pady=10)
self.info_frame = Frame(self)
self.info_frame.configure(corner_radius=14)
self.info_frame.grid(row=1, column=0, padx=(20, 5), pady=(20, 5))
if __name__ == "__main__":
main = Main()
main.mainloop()
'''
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
import customtkinter
class Top(customtkinter.CTkToplevel):
def __init__(self):
super().__init__()
self.put_widget()
self.var = "main_window"
def pass_to_main(self):
# Main.Main.title_info.configure(text=self.var)
# !!! +++
main.title_info.configure(text=self.var) # title_info изменил текст на var
self.destroy() # +++ окно toplevel закрывается
def put_widget(self):
self.btn1 = customtkinter.CTkButton(self,
width=200, text="push", corner_radius=24,
font=("Arial", 18), command=self.pass_to_main)
self.btn1.grid(row=0, column=0,
padx=20, pady=(20, 10),
ipady=10, sticky="ewn")
class Frame(customtkinter.CTkFrame):
def __init__(self, master):
super().__init__(master)
self.put_widget()
def action_btn_signin(self):
# +++
main.title_info.configure(text="Open Toplevel") # +++
Top()
def put_widget(self):
self.btn = customtkinter.CTkButton(self,
text="open toplevel", command=self.action_btn_signin)
self.btn.grid(row=1, column=0,
padx=20, pady=(10, 10), sticky="ew")
class Main(customtkinter.CTk):
def __init__(self):
super().__init__()
self.put_widget()
def put_widget(self):
self.title_info = customtkinter.CTkLabel(self, text="Docs")
self.title_info.grid(row=0, column=0, padx=10, pady=10)
self.info_frame = Frame(self)
self.info_frame.configure(corner_radius=14)
self.info_frame.grid(row=1, column=0,
padx=(20, 5), pady=(20, 5))
if __name__ == "__main__":
main = Main()
main.mainloop()