如何在python Tkinter类之外更改label属性
我有一个tkinter项目,主脚本(不是完整的程序,很长时间)看起来像这样,标签(led_a)是在TK类中创建的如何在python Tkinter类之外更改label属性,python,tkinter,Python,Tkinter,我有一个tkinter项目,主脚本(不是完整的程序,很长时间)看起来像这样,标签(led_a)是在TK类中创建的 .... def fun_A: ... #need to hidden led_A #**need to implement** led_A.forget() or .place() class home(tk.Tk) def __init__(self, *args, **kwargs) tk.Tk
....
def fun_A:
...
#need to hidden led_A
#**need to implement** led_A.forget() or .place()
class home(tk.Tk)
def __init__(self, *args, **kwargs)
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.wm_title(self, "Graph ")
self.geometry("1000x800")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
F=Graph
frame=Graph(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(Graph)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class Graph(tk.frame):
def __init__(self,parent,controller):
...
photo = PhotoImage(file='1.jpg')
led_A = label(self, image = photo)
app = home()
app.mainloop()
所以我尝试实现led_A。忘记在乐趣中,我该怎么做?我尝试了
全局led_A
,但主程序无法识别它。感谢要操作对象,您需要对象的引用。在这种特定情况下,您需要将led\u设置为一个
实例属性,以便可以引用它。您还需要在控制器中添加一个方法,以便访问图形的实例
要使led\u成为一个
实例属性:
class Graph(tk.frame):
def __init__(self,parent,controller):
...
photo = PhotoImage(file='1.jpg')
self.led_A = label(self, image = photo)
...
要向控制器添加方法,请执行以下操作:
class home(tk.Tk)
...
def get_frame(self, frame_class):
return self.frames[frame_class]
理想情况下,func\u A
不应该知道Graph
是如何实现的,因为func\u A
不在Graph
内。这意味着您需要在图形中添加一个函数,该函数将添加或删除led
class Graph(tk.frame):
...
def turn_on_led(self):
self.led_A.grid(...)
最后,您需要修改fun\u A
以使用此方法获取对图形的引用并调用函数:
def fun_A():
graph = app.get_frame(Graph)
graph.turn_on_led()
app.frame.led_A
,需要self.frame=Graph(…
您需要将led_A
更改为实例变量self.led_A
,然后您可以作为app.frames[Graph].led_A
访问它。但是您需要先解决代码的语法问题。