2016-11-24 27 views
0

キャンバスのサイズが変更されたとき(マスターフレームが最大化されたときなど)に、新しいキャンバスウィンドウのサイズを知る必要があります。 残念ながら、self.canvas ['width']を試してみると、常に初期化したときの幅と、現在の幅ではないという幅が戻ってきます。 現在のCanvasウィンドウの寸法はどのようにして取得できますか?あなたがself.canvas['width']を取得するときtkinterキャンバスウィンドウのサイズ

答えて

4

、あなたはあなたのウィジェット、ない実際幅の構成され幅を与えることの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() 
関連する問題