Tkinterで使われるgeometryとは?コードを通して活用方法を徹底解説
今回はTkinterで使われるgeometryに関して、コードを通して活用方法を徹底解説いたします。なんとなくgeometryを使っていた、geometryの詳細を知りたい方へおすすめです。是非最後までご覧ください。
執筆者 - おすすめの記事3選
そもそも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関数と呼ばれます。