0
我需要知道何時畫布被調整大小(例如,當主框架得到最大化時)新的畫布窗口大小。 不幸的是,如果我嘗試self.canvas ['width'],它總是在我初始化的時候恢復它的寬度,而不是當前的寬度。 如何獲取當前的Canvas窗口尺寸?tkinter畫布窗口大小
我需要知道何時畫布被調整大小(例如,當主框架得到最大化時)新的畫布窗口大小。 不幸的是,如果我嘗試self.canvas ['width'],它總是在我初始化的時候恢復它的寬度,而不是當前的寬度。 如何獲取當前的Canvas窗口尺寸?tkinter畫布窗口大小
當您檢索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()