2016-11-24 513 views
0

我需要知道何时画布被调整大小(例如,当主框架得到最大化时)新的画布窗口大小。 不幸的是,如果我尝试self.canvas ['width'],它总是在我初始化的时候恢复它的宽度,而不是当前的宽度。 如何获取当前的Canvas窗口尺寸?tkinter画布窗口大小

回答

4

当您检索self.canvas['width'],你问的Tkinter给你的小部件的配置宽度,而不是实际宽度。对于实际宽度,您可以使用.winfo_width()

如果您想知道画布何时调整大小,可以为小部件上的<Configure>事件添加绑定。传递给绑定的事件对象具有width属性,该属性也具有窗口小部件的实际宽度。

下面是一个例子:

import tkinter as tk 

root = tk.Tk() 
canvas = tk.Canvas(root, width=200, height=200, background="bisque") 
canvas.pack(side="bottom", fill="both", expand=True) 

canvas.create_text(10, 30, anchor="sw", tags=["event"]) 
canvas.create_text(10, 30, anchor="nw", tags=["cget"]) 

def show_width(event): 
    canvas.itemconfigure("event", text="event.width: %s" % event.width) 
    canvas.itemconfigure("cget", text="winfo_width: %s" % event.widget.winfo_width()) 

canvas.bind("<Configure>", show_width) 

root.mainloop()