Это первый раз, когда я использую pyhton для создания графического интерфейса, и мне трудно понять связь между родителем и дочерними элементами.tkinter: как вызвать метод ребенка из другого ребенка
Я сначала создать корневое окно в отдельном потоке:
import tkinter as tk
import threading as th
class GUI(th.Thread):
def __init__(self):
th.Thread.__init__(self)
self.root = tk.Tk()
self.gp = MainFrame(self.root)
def start(self):
self.root.mainloop()
def stop(self):
self.root.destroy()
Конструктор этого класса вызывает конструктор основной рамы:
class MainFrame(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(self,parent)
self.x=my_label(self)
self.up=my_update(self)
self.grid()
В основной раме, у меня есть только два простых элемента, их класс:
class my_label(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(self,parent)
self.l = tk.Label(self,text="some text")
self.l.grid()
self.grid()
class my_update(tk.Frame):
def __init__(self,parent):
tk.Frame.__init__(self,parent)
self.b=tk.Button(self,text="update",command=self.ButtonPushed)
self.b.grid()
self.grid()
def ButtonPushed(self):
# here is my problem...
Выполнение этой работы, но когда я нажимаю на кнопке обновления я хочу изменить x
(в MainFrame
). Другими словами, я хочу изменить от ребенка один из детей другого родителя ... как я могу это сделать?
Боковой вопрос: действительно ли общая конструкция моего графического интерфейса правильная? Я имею в виду, правильно ли дать my_update
и my_label
унаследовать от tk.Frame
?
спасибо, ваш метод работает. но пока я читал ваш ответ, я понял, что концепция моей программы неверна ... поэтому мне не нужно ваше решение. вы все равно помогли мне, показывая мне, что я могу найти лучший способ кодирования! – PinkFloyd