2020年7月5日日曜日

tkinterでclass化

tkinterをClass化した際の備忘録

■独自クラス

import tkinter as tk
import tkinter.messagebox

class Application(tk.Frame):
    def __init__(self):
        master = tk.Tk() # ウィジェットを作成
        super().__init__(master)
        self.pack()
        master.geometry("300x300")  # ウインドウサイズ
        master.title("tkinter")    # ウインドウタイトル
        btn_message = tk.Button(self, text = "Python/Tkinter", command=self.func_btn_click ) # ボタンオブジェクト作成
        btn_message.pack()   # ボタンオブジェクトを配置
        btn_exit = tk.Button(self, text = "exit", command=self.func_btn_exit ) # exitボタンオブジェクト作成
        btn_exit.pack() # ボタンオブジェクトを配置
    # メッセージボタンクリック時に呼び出されるメソッド
    def func_btn_click(self):
        tk.messagebox.showinfo("title", "message")
    # exitボタンクリック時に呼び出されるメソッド
    def func_btn_exit(self):
#         self.master.destroy() # widgetを破棄することで終了させる、今回はquitで終了
        self.quit()

if __name__ == "__main__":
    app = Application() # Applicationのインスタンス化
    app.mainloop() # tk上のイベントを補足しイベントに対応した処理を実行する

■独自クラスからインスタンスを作成事項する実行モジュール

import tkinter_class

if __name__ == "__main__":
    app = tkinter_class.Application() # Applicationのインスタンス化
    app.mainloop() # tk上のイベントを補足しイベントに対応した処理を実行する