Python Code Notes

Information by python engineer

【tkinter】 画面サイズ・位置の設定方法 - 基礎 【Python】

f:id:vigilantPotato:20210515005605p:plain
tkinterメイン画面の位置・サイズの取得・調整が可能なgeometryメソッドの基本的な使い方を整理した。 また、geometryメソッドと直接関連しないが、併用することの多いモニターの画面サイズの取得方法についてもまとめた。より実践的な使い方は、以下の記事を参照。

【スポンサーリンク】


メイン画面のサイズ・位置を設定

トップレベルウィジェット(Tkウィジェット)のgeometryメソッドに値を入力することで、メイン画面のサイズと位置を調整することができる。
300x150のサイズで座標(100, 100)に画面を出す場合は、以下の通りgeometryメソッドに文字列で"300x150+100+300"を渡せばよい。

import tkinter

root = tkinter.Tk()                 #トップレベルウィジェット
root.geometry("300x150+100+300")    #画面サイズ、位置の設定
root.mainloop()

上記のコードを実行すると、下図の様に指定したサイズの画面が指定した位置に出現する。

f:id:vigilantPotato:20191113215937p:plain

[↑ 目次へ]


【スポンサーリンク】


メイン画面のサイズ・位置を取得

geometryメソッドに値を渡さないと、現在の画面サイズ・位置を取得することができる。以下の例では、クリックすると画面サイズを取得して表示するボタンを作成した。

import tkinter


#クリックすると画面サイズを取得して表示するボタン
class GeometryButton(tkinter.Button):
    def __init__(self, master):
        super().__init__(
            master,
            width=15,
            text="click!",
            command=self.get_geometry,  #クリック時に実行
        )
        self.master = master    #トップレベルウィジェット

    def get_geometry(self):
        self.config(text =  self.master.geometry()) #サイズ・位置を取得して表示


root = tkinter.Tk()
b = GeometryButton(root)
b.pack()
root.mainloop()

上記のコードを実行すると、以下の画面が現れる。

f:id:vigilantPotato:20191113214816p:plain

ボタンをクリックすると、画面サイズと位置が表示される。

f:id:vigilantPotato:20191113214829p:plain

画面のサイズや位置を変更して再度クリックすると、値が更新される。

f:id:vigilantPotato:20191113214949p:plain

[↑ 目次へ]


モニター画面サイズを取得

winfo_screenwidthwinfo_screenheightメソッドを使用することで、使用しているモニターの横幅と縦幅を取得することができる。以下の例では、これらのメソッドで取得したモニターのサイズをラベルに表示させている。

import tkinter


#sizeを表示するラベル
class ScreensizeLabel(tkinter.Label):
    def __init__(self, size, master):
        super().__init__(
            master,
            width=15,
            text=size,  #値を表示
        )


root = tkinter.Tk() #トップレベルウィジェット

l_width = ScreensizeLabel(
    root.winfo_screenwidth(),   #モニターの横幅を渡す
    root,
    )
l_width.pack()

l_height = ScreensizeLabel(
    root.winfo_screenheight(),  #モニターの縦幅を渡す
    root,
    )
l_height.pack()

root.mainloop()

実行すると、以下の通り画面のサイズが表示される。この機能を利用し、tkinterの画面をモニター端に合わせることが可能になる。

f:id:vigilantPotato:20210515004946p:plain

[↑ 目次へ]


【スポンサーリンク】