つきすけ の コーディング記

細かいところで嫌にならないように、小さいことでも解説していくブログ。たまに関係ないことも書く。

PythonのTkinterで、ウィンドウの大きさに合わせてcanvasのサイズチェンジする

ウィジェットを配置するとき、.pack() もしくは.place()をいじることで実現できます。

gird() はそもそもの挙動がよくわかっていないので省略です。
とりあえず、こんな感じのことがやりたい。


canvas以外のウィジェット(ボタンとかラベルとか)にも有効… だと思います(未検証)
なお、Python3 で書かれています。

.pack() の場合

expand=True と、 fill=tkinter.BOTH を指定します。なお、fill=tkinter.Xとすると、横方向のみ可変、fill=tkinter.Y とすると、縦方向のみ可変となります。

import tkinter
window = tkinter.Tk()

canvas = tkinter.Canvas(bg="#03948a") # color
canvas.pack(expand=True, fill=tkinter.BOTH)

window.mainloop()
.place() の場合

relwidth = 1.0と、relheight=1.0 を指定します。これは縦横の相対的な大きさを指定しているものです。片方だけ指定すれば片方のみ可変になり、1.0以下の数値であれば好きな割合で指定することができます。

import tkinter
window = tkinter.Tk()

canvas = tkinter.Canvas(bg="#03948a") # color
canvas.place(x=0, y=0, relwidth=1.0, relheight=1.0)

window.mainloop()