在一个 Tkinter 类中编辑/添加 Tkinter 小部件,从另一个 Tkinter 类



假设我有两个tkinter类充当单独的窗口。如何从另一个 tkinter 类中的一个类编辑任何给定的小部件。 ALso,我如何在一个 tkinter 类中添加另一个 tkinter 类中的小部件?

from tkinter import Tk, Label, Button
class MyFirstGUI:
def __init__(self, master):
self.master = master
master.title("A simple GUI")
self.label = Label(master, text="This is 
our first GUI!")
self.label.pack()
self.greet_button = Button(master, 
text="Greet", command=self.greet)
self.greet_button.pack()
self.close_button = Button(master, 
text="Close", command=master.quit)
self.close_button.pack()
def greet(self):
print("Greetings!")
root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
from tkinter import Tk, Label, Button
class MyFirstGUI2:
def __init__(self, master):
self.master = master
master.title("A simple GUI")
self.label = Label(master, text="This is 
our first GUI!")
self.label.pack()
self.greet_button = Button(master, 
text="Greet", command=self.greet)
self.greet_button.pack()
self.close_button = Button(master, 
text="Close", command=master.quit)
self.close_button.pack()
def greet(self):
print("Greetings!")
root = Tk()
my_gui = MyFirstGUI2(root)
root.mainloop()

我认为最好为您的两个窗口(或至少其中一个(使用顶级小部件。现在,将创建第一个窗口,并且代码将在到达root.mainloop((行时停止。在关闭第一个窗口之前,不会创建第二个窗口。

您可以从每个类传入一个引用。

import tkinter
from tkinter import Tk, Label, Toplevel, Button
class MainWidget:
def __init__(self, master):
self.master = master
self.widgetTwo = None
self.label = Label(self.master, text='Widget One')
self.label.pack()
class WidgetTwo(Toplevel):
def __init__(self, master, mainWidget):
Toplevel.__init__(self, master)
self.master = master
self.mainWidget = mainWidget
self.labelTwo = Label(self, text='Widget Two')
self.labelTwo.pack()
Button(self, text='Change Main Widget Text', command=self.ChangeMainWidgetLabel).pack()
def ChangeMainWidgetLabel(self):
self.mainWidget.label.config(text='Widget One text changed')

mw = Tk()
mainWidget = MainWidget(mw)
widgetTwo = WidgetTwo(mw, mainWidget)
mainWidget.widgetTwo = widgetTwo
mw.mainloop()

最新更新