Python 3 - Tkinter メインウィンドウを表示する

目次

メインウィンドウを表示する (1)

まずは、tkinter.Tk オブジェクトを生成します。
その後、mainloop メソッドを使うことで、メインウィンドウを表示することができます。

また、title メソッドで、タイトルバーに表示する文字列を設定することができます。

Example

source code

from tkinter import Tk

root = Tk()
root.title("Tkinter win")
root.mainloop()

result

実行結果

メインウィンドウを表示する (2)

まずは、tkinter.ttk.Frame を継承したクラスを作成します。 ここでは、作成したクラスを MainFrame とします。
さらに、MainFrame オブジェクトを生成するときに、Tk オブジェクトを指定します。
最後に、MainFrame オブジェクトの mainloop メソッドを使うことで、メインウィンドウを表示することができます。

Example

source code

from tkinter import Tk
from tkinter import ttk

class MainFrame(ttk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.pack()
        self.make_style()
        self.create_widgets()

    def make_style(self):
        pass

    def create_widgets(self):
        # MainFrame の幅と高さを設定
        self.configure(width=240, height=160)

root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)
frame.mainloop()

result

実行結果

メインウィンドウを画面の中央に表示する

まずは、Tk オブジェクトの mainloop メソッドの前に、update_idletasks メソッドを使います。 その後、winfo_width, winfo_height メソッドでメインウィンドウの幅、高さを取得することができます。

また、winfo_screenwidth, winfo_screenheight メソッドでモニターの解像度の幅、高さを取得することができます。

これらより、メインウィンドウを画面の中央に表示するための x, y 座標を求めることができます。
そして、geometry メソッドの引数に、
"+「ウィンドウのx座標」+「ウィンドウのy座標」"
のような形式の文字列を指定します。

Example

source code

from tkinter import Tk
from tkinter import ttk

class MainFrame(ttk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.pack()
        self.make_style()
        self.create_widgets()

    def make_style(self):
        pass

    def create_widgets(self):
        # MainFrame の幅と高さを設定
        self.configure(width=240, height=160)

root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)

root.update_idletasks()
w = root.winfo_width()
h = root.winfo_height()
scw = root.winfo_screenwidth()
sch = root.winfo_screenheight()
geometry = "+{:d}+{:d}".format(int((scw - w) / 2),
                               int((sch - h) / 2))
root.geometry(geometry)

frame.mainloop()

result

表示内容は「メインウィンドウを表示する (2)」と同様。
ただし、表示位置は画面の中央になります。

参考リンク