tkinter画布窗口大小

Alb*_*ena 3 tkinter python-3.x tkinter-canvas

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

Bry*_*ley 7

检索时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()
Run Code Online (Sandbox Code Playgroud)