前提・実現したいこと
- tkinterで画面遷移をさせたいです。
- Tkinterで画面切り替え・画面遷移を参考にしました。
- 上記のサイトでは、一つのファイルに複数の画面のコードを記載していますが、整理しやすくするために画面毎にPythonファイルを分けたいです。
発生している問題・エラーメッセージ
- 起動すると、「sample1」が問題なく立ち上がります。
- 「sample2」ボタンをクリックすると、画面遷移ではなく、「sample1」は開いたまま、「sample2」という別の画面が開きます。
⁻ 「テスト」という表示は、「sample2」の方に表示されて欲しかったのですが、「sample1」の方に表示されてしまいます。
該当のソースコード
python
1# base.py 2import tkinter as tk 3 4class Sample1(tk.Tk): 5 def __init__(self, *args, **kwargs): 6 tk.Tk.__init__(self, *args, **kwargs) 7 8 self.title('sample1') 9 self.geometry('800x600') 10 self.grid_rowconfigure(0, weight=1) 11 self.grid_columnconfigure(0, weight=1) 12 13 # main frame 14 self.main_frame = tk.Frame() 15 self.main_frame.grid(row=0, column=0, sticky="nsew") 16 self.to_pl = tk.Button( 17 self.main_frame, text='sample2', command=lambda: self.change_page(sample2.Sample2()) 18 ) 19 self.to_pl.pack() 20 21 22def change_page(self, page): 23 page.tkraise() 24 25 26if __name__ == "__main__": 27 app = Sample1() 28 app.mainloop()
python
1# sample2 2import tkinter as tk 3 4class Sample2(tk.Tk): 5 def __init__(self, *args, **kwargs): 6 tk.Tk.__init__(self, *args, **kwargs) 7 8 self.title('sample2') 9 self.geometry('800x600') 10 self.grid_rowconfigure(0, weight=1) 11 self.grid_columnconfigure(0, weight=1) 12 13 self.main_frame = tk.Frame() 14 self.main_frame.grid(row=0, column=0, sticky="nsew") 15 self.titleLabel = tk.Label(self.main_frame, text="テスト", font=('Helvetica', '35')) 16 self.titleLabel.pack(anchor='center', expand=True) 17
同じファイル内に書き込めば、画面遷移がうまくいくことは確認できているのですが、別のファイルにした場合、どのように読み込めばうまく動くのでしょうか。
お分かりの方、ご教示頂ければ幸いです。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/05/24 11:12
2022/05/24 11:55
2022/05/26 05:45