キャンバスでウィジェットを表示しよう
前回はCanvasウィジェットを使ってビットマップのXBM画像を表示しました。
今回はキャンバス上に他のウィジェットを表示してみましょう。
Canvasウィジェットで他のウィジェットを表示する
Canvasウィジェットで他のウィジェットを表示するメソッドは、以下の通りです。
オブジェクト名.create_window(座標, オプション)
座標の意味は、anchorオプションの指定によって異なります。
デフォルトでは表示するウィジェットの中心位置になります。
create_window()のオプション
create_window()の主なオプションは、以下の通りです。
オプション名 | 内容 | |
window | 表示するウィジェット | |
anchor | ウィジェットの位置 | |
center | ウィジェットの中心。デフォルト | |
n | ウィジェットの上端 | |
s | ウィジェットの下端 | |
w | ウィジェットの左端 | |
e | ウィジェットの右端 | |
nw | ウィジェットの左上端 | |
ne | ウィジェットの右上端 | |
sw | ウィジェットの左下端 | |
se | ウィジェットの右下端 | |
width | 表示するウィジェットの幅 | |
height | 表示するウィジェットの高さ |
Canvasウィジェットに他のウィジェットを表示するプログラム
Canvasウィジェットに他のウィジェットを表示するプログラムは、以下のようになります。
リストボックス、ラベル、チェックボタン、ラジオボタン、ボタンをCanvasウィジェット上に表示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
### インポート import tkinter ### メイン画面作成 main = tkinter.Tk() ### キャンバス作成 canvas = tkinter.Canvas(master=main, width=640, height=320) ### キャンバス表示 canvas.pack() ### 選択インデックス取得関数 value1 = tkinter.StringVar() def get_index(event): index = event.widget.curselection() value1.set(event.widget.get(index)) ### リストボックス設定 listbox = tkinter.Listbox(master=canvas, height=5) for name in ("明治", "大正", "昭和", "平成", "令和"): listbox.insert(tkinter.END, name) listbox.bind("<<ListboxSelect>>", get_index) canvas.create_window( 80, 50, window=listbox, anchor="nw") ### ラベル設定 canvas.create_window( 80, 180, window=tkinter.Label(master=canvas, textvariable=value1, font=(None,40)), anchor="nw") ### チェックボタン設定 canvas.create_window(320, 50, window=tkinter.Checkbutton(master=canvas, text="チェックボタン1"), anchor="nw") canvas.create_window(320, 80, window=tkinter.Checkbutton(master=canvas, text="チェックボタン2"), anchor="nw") ### ラジオボタン設定 value2 = tkinter.IntVar() canvas.create_window(320, 150, window=tkinter.Radiobutton(master=canvas, text="ラジオボタン1", variable=value2, value=1), anchor="nw") canvas.create_window(320, 180, window=tkinter.Radiobutton(master=canvas, text="ラジオボタン2", variable=value2, value=2), anchor="nw") ### ボタン設定 canvas.create_window(500, 230, window=tkinter.Button(master=canvas, text="QUIT", height=3, width=10, command=main.destroy), anchor="nw") ### イベントループ main.mainloop() |
プログラムを実行すると、以下のような画面が表示されます。