2016-01-06 417 views
0

我遇到以下问题。我正在制作一个tkinter GUI,并且我需要访问Canvas.create_window小部件内部的一个画布内部的对象,该小部件包含一些其他对象。例如:在canvas.create_window中访问控件的属性

import Tkinter as tk 
class Demo: 
    def __init__(self, master): 
     self.canvas = tk.Canvas() 
     self.canvas.pack(fill="both", expand=True) 
     f = tk.Frame(self.canvas) 
     f.pack() 
     self.container = self.canvas.create_window(50,50, window = f) 
     l = tk.Label(f, text='abc') 
     e = tk.Entry(f, width = 5) 
     l.pack() 
     e.pack() 
if __name__ == '__main__': 
    root = tk.Tk() 
    app = Demo(root) 
    root.mainloop() 

我想编辑将L标签的文本(这是目前“ABC”),在触发一些其他事件。我想我需要使用canvas.itemconfig,但我找不到传递给此函数的标签正确引用的方法。有任何想法吗? 谢谢

回答

2

您不需要使用itemconfigure - 这仅用于配置画布项目。您的标签不是画布项目,而是您像其他任何小部件一样访问的普通tkinter小部件。保存一个引用,然后使用该引用调用一个方法。

例如:

class Demo: 
    def __init__(...): 
     ... 
     self.l = tk.Label(f, text='abc') 
     ... 
    def some_event_handler(event): 
     self.l.configure(text="xyz")