访问canvas.create_window中的widget的属性

时间:2016-01-06 16:36:29

标签: python tkinter tkinter-canvas

我遇到以下问题。我正在创建一个tkinter GUI,我需要访问一个画布内的对象,在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标签的文本(当前是#ab;')。我想我需要使用canvas.itemconfig,但我找不到一种方法来传递给这个函数正确的标签引用。有任何想法吗? 谢谢

1 个答案:

答案 0 :(得分:2)

您不需要使用class Demo: def __init__(...): ... self.l = tk.Label(f, text='abc') ... def some_event_handler(event): self.l.configure(text="xyz") - 这仅用于配置画布项目。您的标签不是画布项,它只是一个普通的tkinter小部件,您可以像任何其他小部件一样访问它。保存引用,然后使用引用调用方法。

例如:

{{1}}