2016-01-06 419 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")