田舎社会人のいろいろ学習記

Python、英語、その他いろいろ

【tkinter】ウィジェットを配置する方法③: placeメソッド【Python】

f:id:vigilantPotato:20210727235039p:plain
ウィジェットを座標を指定して配置したいときに使用するplaceメソッドの使用方法を整理する。


【スポンサーリンク】


placeでウィジェットを配置

ウィジェットに対してplaceメソッドを実行する際、引数xとyにピクセル値を指定することで、指定した座標にウィジェットを配置することができる。画面の左上が座標(0, 0)となる。以下、ボタン5個を座標を指定して表示させる例を示す。

import tkinter

root = tkinter.Tk()

#Button5個をplaceで表示
for i in range(5):
    b = tkinter.Button(
        root,
        text="place: " + str(i+1),
        bg="lightblue",
        )
    b.place(x=i*15, y=i*20)    #placeで表示

root.mainloop()

実行すると、引数(x, y)で指定した座標にボタンが表示される。画面の左上が座標(0, 0)となる。packやgridとは違い、座標の絶対値を指定しているため、座標によってはウィジェット同士が重なってしまう。

f:id:vigilantPotato:20210727235039p:plain

[↑ 目次へ]


CSVファイルで座標を指定

ウィジェットのテキスト及び座標が保管されているCSVファイルを読み込んで、ウィジェットを表示させる例を示す。読み込むcsvファイルは以下の通り。タイトル、x座標、y座標の絶対値が記載されている。

button_1-1, 100, 0
button_2-1, 10, 50
button_2-2, 10, 100
button_3-3, 0, 150
button_4-1, 70, 150
import tkinter
import csv

root = tkinter.Tk()

#CSVファイルを読み込んで表示
with open("place_csv.csv") as f:
    reader = csv.reader(f)
    for r in reader:
        b = tkinter.Button(
            root,
            text=r[0],
            bg="lightblue",
            )
        b.place(x=r[1], y=r[2])

root.mainloop()

CSVファイルを読み込み、for文で一行ずつ読み込みながらボタンを表示させている。座標を絶対値で指定するため、packやgridよりも複雑な位置の指定が可能となる。

f:id:vigilantPotato:20210727235136p:plain

[↑ 目次へ]


オプション

オプション 動作
x, y ウィジェットの座標をピクセル値で指定
height, width ウィジェット高さ・幅の設定
relheight, relwidth 親ウィジェットに対する相対的な高さ・幅(0~1で設定)

[↑ 目次へ]


【スポンサーリンク】