Tkinter をクラスで作成したいときの、ひな形
import tkinter
from tkinter import ttk
from tkinter import Toplevel
# メイン画面 デザイン・配置
class MainScreenViewClass(tkinter.Frame):
"""
メイン画面 デザイン・配置 クラス
"""
def __init__(self, function_s, function_p, master=None): # master=None 自分が親
super().__init__(master) # 基底クラスのコンストラクタをオーバーライド
self.master.minsize(width=600, height=600)# 画面サイズの設定 min max 両方で大きさが変更されなくする。
self.master.maxsize(width=600, height=600)
self.master.title('メイン画面') # 画面タイトルの設定
# クラス変数にセッティングファンクションclassを入れる
self.func = function_s() # メイン画面の処理クラス
self.pack()
self.create_widgets_main()
# メイン画面 ウィジェットの作成 デザイン
def create_widgets_main(self):
"""
ウィジェットの配置 デザイン
"""
# -----------上部フレーム
self.Yahoo_frame_upper = tkinter.Frame(self)
# タイトル ラベル
test_label = tkinter.Label(self.Yahoo_frame_upper, text = "Yahoo!", font=("MSゴシック", "20", "bold")) #ラベルWidgetを生成
test_label.pack(pady=4)
# 商品検索 ボタン
test_btn = tkinter.Button(self.Yahoo_frame_upper, text='検索', width=6, height=1)
test_btn["command"] = lambda: self.func.Yahoo_goods_search_btn_f()
test_btn.pack(side="left")
self.Yahoo_frame_upper.pack(ipady = 10)
# -----------上部フレーム
# サブ画面 ウィジェットの作成 デザイン
def create_widgets_property(self):
"""
ウィジェットの配置 デザイン
"""
# 設定画面の設定
self.dialog = Toplevel(self)
self.dialog.title("modal dialog")
self.dialog.minsize(width=480, height=550)# 画面サイズの設定
self.dialog.maxsize(width=480, height=550)
# モーダルダイアログ(元画面を操作不可として表示)
self.dialog.grab_set()
# 空フレーム
self.frame_Nothing = tkinter.Frame(self.dialog)
self.frame_Nothing.pack(ipady = 20)
# 処理用のクラス
class testClass():
def __init__(self) -> None:
pass
def test():
pass
# メイン画面を表示する
root = tkinter.Tk()
app = MainScreenViewClass(function_s = testClass, master=root) # このやり方で、関数と画面を分離させる
app.mainloop()