KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
Tkinterで使われるgeometryとは?コードを通して活用方法を徹底解説

Tkinterで使われるgeometryとは?コードを通して活用方法を徹底解説

今回はTkinterで使われるgeometryに関して、コードを通して活用方法を徹底解説いたします。なんとなくgeometryを使っていた、geometryの詳細を知りたい方へおすすめです。是非最後までご覧ください。

目次
  1. そもそもTkinterで使われるgeometryとは?
  2. getmetry関数の定義
    1. パソコン画面の幅・高さを取得
    2. アプリ画面(Window)の位置や大きさを取得
  3. よく利用されるgetmetry関数サンプル【5選】
    1. アプリ画面(Window)をパソコン画面の右上隅に設定する
    2. アプリ画面(Window)をパソコン画面の右下隅に設定する
    3. アプリ画面(Window)をパソコン画面の左下隅に設定する
    4. アプリ画面(Window)をパソコン画面の左上隅に設定する
    5. アプリ画面(Window)をパソコン画面全体へ表示する。
  4. まとめ
  5. 参考文献
目次を開く⬇︎

そもそもTkinterで使われるgeometryとは?

Tkinterで使われるgeometryとは、作成するアプリ画面(Window)の、位置や大きさを調整するために利用される関数を意味します。

別名でgeometry関数と呼ばれます。Tkinterを活用する上でとても大切な関数になります。

getmetry関数の定義

getmetry関数は

1# width : アプリ画面(Window)の幅
2# height : アプリ画面(Window)の高さ
3# xPoint : パソコン画面の左上隅を原点(0, 0)とした、x座標
4# yPoint : パソコン画面の左上隅を原点(0, 0)とした、y座標
5# 原点とは? : http://kentiku-kouzou.jp/suugaku-genten.html
6.geometry(widthxheight+xPoint+yPoint")

で定義されます。戻り値はありません。

例えば、以下のようなコードを作成すると

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)の位置や大きさを設定するサンプル関数
5    def getSample(self):
6        # アプリ画面(Window)の位置や大きさを設定する。
7        # アプリ画面(Window)の幅 : 300
8        # アプリ画面(Window)の高さ : 200
9        # パソコン画面の左上隅を原点(0, 0)とした、x座標 : 120
10        # パソコン画面の左上隅を原点(0, 0)とした、y座標 : 0
11        self.master.geometry("300x200+120+0")
12
13    def __init__(self, master=None):
14        # Windowの初期設定を行う。
15        super().__init__(master)
16        self.getSample()
17
18# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
19if __name__ == "__main__":
20    # Windowを生成する。
21    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
22    root = tk.Tk()
23    app = Application(master=root)
24    # Windowをループさせて、継続的にWindow表示させる。
25    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
26    app.mainloop()

以下の画像のようにアプリ画面(Window)を表示します。

パソコン画面の幅・高さを取得

パソコン画面の幅・高さを利用して、アプリ(Window)の位置や大きさを変更したい場合もあるかと思います。

パソコン画面の幅・高さを取得する場合、winfo_screenwidth(), winfo_screenheight()関数を活用すると便利です。

winfo_screenwidth(), winfo_screenheight()関数は、それぞれ

1# パソコン画面の幅を取得する関数
2# 戻り値 : 幅の数値
3# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
4.winfo_screenwidth()
5
6# パソコン画面の高さを取得する関数
7# 戻り値 : 高さの数値
8# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
9.winfo_screenheight()

で定義されます。

例えば、以下のようなコードを作成すると

1import tkinter as tk
2
3class Application(tk.Frame):
4    # パソコン画面の幅・高さを取得する関数
5    def getSize(self):
6        # パソコン画面の幅を取得する関数
7        print(self.master.winfo_screenwidth())
8        # パソコン画面の高さを取得する関数
9        print(self.master.winfo_screenheight())
10
11    def __init__(self, master=None):
12        # Windowの初期設定を行う。
13        super().__init__(master)
14        self.getSize()
15
16# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
17if __name__ == "__main__":
18    # Windowを生成する。
19    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
20    root = tk.Tk()
21    app = Application(master=root)
22    # Windowをループさせて、継続的にWindow表示させる。
23    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
24    app.mainloop()

以下の画像のように、パソコン画面の幅・高さを取得します。

アプリ画面(Window)の位置や大きさを取得

作成するアプリ画面(Window)の位置や大きさを取得して、アプリ画面(Window)を移動したり、大きさを微調整したい場合もあるかと思います。

アプリ画面(Window)の位置や大きさを取得する場合、geometry(), winfo_width(), winfo_height(), winfo_x(), winfo_y()関数を活用すると便利です。

geometry(), winfo_width(), winfo_height(), winfo_x(), winfo_y()関数は、それぞれ

1# アプリ画面(Window)の位置や大きさを取得する関数
2# 戻り値 : ({アプリ画面(Window)の幅}x{アプリ画面(Window)の高さ}+{パソコン画面の左上隅を原点(0, 0)とした、x座標}+{パソコン画面の左上隅を原点(0, 0)とした、y座標})
3# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
4# もしくは、.winfo_geometry()でも可
5.geometry()
6
7# アプリ画面(Window)の幅を取得する関数
8# 戻り値 : アプリ画面(Window)の幅の数値
9# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
10.winfo_width()
11
12# アプリ画面(Window)の高さを取得する関数
13# 戻り値 : アプリ画面(Window)の高さの数値
14# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
15.winfo_height()
16
17# パソコン画面の左上隅を原点(0, 0)とした、x座標を取得する関数
18# 戻り値 : パソコン画面の左上隅を原点(0, 0)とした、x座標の数値
19# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
20.winfo_x()
21
22# パソコン画面の左上隅を原点(0, 0)とした、y座標を取得する関数
23# 戻り値 : パソコン画面の左上隅を原点(0, 0)とした、y座標の数値
24# 戻り値とは? : https://wa3.i-3-i.info/word15003.html
25.winfo_y()

で定義されます。

例えば、以下のようなコードを作成すると

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)の位置や大きさを取得する関数
5    def getSize(self):
6        # もしくは、.winfo_geometry()でも可
7        print(self.master.geometry())
8
9    def __init__(self, master=None):
10        # Windowの初期設定を行う。
11        super().__init__(master)
12        self.getSize()
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    app = Application(master=root)
20    # Windowをループさせて、継続的にWindow表示させる。
21    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
22    app.mainloop()

以下の画像のように、アプリ画面(Window)の位置や大きさを取得します。

よく利用されるgetmetry関数サンプル【5選】

最後によく利用されるgetmetry関数サンプルを、5選紹介いたします。

アプリ画面(Window)をパソコン画面の右上隅に設定する

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)の位置を右上へ表示する関数
5    def getRightUpApp(self):
6        # アプリ画面(Window)の幅
7        width = 300
8        # アプリ画面(Window)の高さ
9        height = 200
10        # パソコン画面の幅を取得
11        pcW = self.master.winfo_screenwidth()
12        x = pcW - width
13        self.master.geometry(str(width)+"x"+str(height)+"+"+str(x)+"+0")
14
15    def __init__(self, master=None):
16        # Windowの初期設定を行う。
17        super().__init__(master)
18        self.getRightUpApp()
19
20# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
21if __name__ == "__main__":
22    # Windowを生成する。
23    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
24    root = tk.Tk()
25    app = Application(master=root)
26    # Windowをループさせて、継続的にWindow表示させる。
27    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
28    app.mainloop()

アプリ画面(Window)をパソコン画面の右下隅に設定する

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)の位置を右下へ表示する関数
5    def getRightBottomApp(self):
6        # アプリ画面(Window)の幅
7        width = 300
8        # アプリ画面(Window)の高さ
9        height = 200
10        # パソコン画面の幅を取得
11        pcW = self.master.winfo_screenwidth()
12        # パソコン画面の高さを取得
13        pcH = self.master.winfo_screenheight()
14        x = pcW - width
15        y = pcH - height
16        self.master.geometry(str(width)+"x"+str(height)+"+"+str(x)+"+"+str(y))
17
18    def __init__(self, master=None):
19        # Windowの初期設定を行う。
20        super().__init__(master)
21        self.getRightBottomApp()
22
23# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
24if __name__ == "__main__":
25    # Windowを生成する。
26    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
27    root = tk.Tk()
28    app = Application(master=root)
29    # Windowをループさせて、継続的にWindow表示させる。
30    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
31    app.mainloop()

アプリ画面(Window)をパソコン画面の左下隅に設定する

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)の位置を左下へ表示する関数
5    def getLeftBottomApp(self):
6        # アプリ画面(Window)の幅
7        width = 300
8        # アプリ画面(Window)の高さ
9        height = 200
10        # パソコン画面の高さを取得
11        pcH = self.master.winfo_screenheight()
12        y = pcH - height
13        self.master.geometry(str(width)+"x"+str(height)+"+0"+"+"+str(y))
14
15    def __init__(self, master=None):
16        # Windowの初期設定を行う。
17        super().__init__(master)
18        self.getLeftBottomApp()
19
20# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
21if __name__ == "__main__":
22    # Windowを生成する。
23    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
24    root = tk.Tk()
25    app = Application(master=root)
26    # Windowをループさせて、継続的にWindow表示させる。
27    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
28    app.mainloop()

アプリ画面(Window)をパソコン画面の左上隅に設定する

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)の位置を左上へ表示する関数
5    def getLeftUpApp(self):
6        # アプリ画面(Window)の幅
7        width = 300
8        # アプリ画面(Window)の高さ
9        height = 200
10        self.master.geometry(str(width)+"x"+str(height)+"+0+0")
11
12    def __init__(self, master=None):
13        # Windowの初期設定を行う。
14        super().__init__(master)
15        self.getLeftUpApp()
16
17# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
18if __name__ == "__main__":
19    # Windowを生成する。
20    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
21    root = tk.Tk()
22    app = Application(master=root)
23    # Windowをループさせて、継続的にWindow表示させる。
24    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
25    app.mainloop()

アプリ画面(Window)をパソコン画面全体へ表示する。

1import tkinter as tk
2
3class Application(tk.Frame):
4    # アプリ画面(Window)をパソコン画面全体へ表示する関数
5    def getZoomUp(self):
6        # pattern1
7        # パソコン画面の幅を取得
8        w = self.master.winfo_screenwidth()
9        # パソコン画面の高さを取得
10        h = self.master.winfo_screenheight()
11        self.master.geometry(str(w)+"x"+str(h)+"+0"+"+0")
12
13        # pattern2
14        # self.master.state('zoomed')
15
16        # pattern3
17        # -fullscreen : アプリ画面(Window)を画面いっぱいに表示させるかどうかを設定。True(画面いっぱいにアプリ画面(Window)を表示する), False(画面いっぱいにアプリ画面(Window)を表示しない、デフォルト)
18        # attributesについて : https://kuroro.blog/python/tJyCah49cYKRAQAFohsi/
19        # self.master.attributes('-fullscreen', True)
20
21    def __init__(self, master=None):
22        # Windowの初期設定を行う。
23        super().__init__(master)
24        self.getZoomUp()
25
26# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
27if __name__ == "__main__":
28    # Windowを生成する。
29    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
30    root = tk.Tk()
31    app = Application(master=root)
32    # Windowをループさせて、継続的にWindow表示させる。
33    # mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
34    app.mainloop()

attributesに関しては、Tkinterで使われるattributesとは?活用事例を交えて徹底解説!?でまとめていますので、是非ご確認ください。

まとめ

  • Tkinterで使われるgeometryとは、アプリ画面(Window)の位置や大きさを調整するために利用される関数を意味します。
  • 別名でgeometry関数と呼ばれます。

参考文献