Pythonで手軽にGUIアプリケーションを作れるモジュール、Tkinterで画面遷移を実装してみました。
tkinterなら画面遷移もらくらくー! pic.twitter.com/dKTSaXoKrZ
— かしわばゆき (@yuki_kashiwaba) 2019年5月26日
Tkinterで画面遷移を実装する方法はいくつかあります。
例えばこんな感じ。
① 画面ごとにそれぞれ別のウィジェットを用意して、遷移のたびにWigetを作ったり消したりする方法
② rootウィジェットの上にFrameを用意して、そのFrameを作ったり消したりする方法
③ Frameの中身を書き換える方法
④ メインのウィジェットやFrameは消さずに、同じ座標に新しいFrameをかぶせる方法
などなど。
今回はなぜか一番見づらくて無駄な処理の多い①の方法で作ってしまいました。
備忘録としてコードだけ貼っておきます。
ボタンを押すと別のWindowが立ち上がるだけの処理です。
もう少しTkinterを使いこなせるようになったら、もっと効率的な方法に書き直してみようと思います。
ソースコード
from tkinter import * from tkinter import ttk def wiget_destroy(): root.destroy() def first_gui(): def change_display(): root.destroy() second_gui() root = Tk() root.title("second tk") textvar = StringVar() content = ttk.Frame(root) content['padding'] = (15,10,15,0) namelbl = ttk.Label(content,text='this is first') cancel = ttk.Button(content, text="変更", command=change_display) content.grid(column=1, row=0) namelbl.grid(column=1, row=0, columnspan=2) cancel.grid(column=2, row=2) root.mainloop() def second_gui(): def change_display(): root.destroy() first_gui() root = Tk() root.title("second tk") textvar = StringVar() content = ttk.Frame(root) content['padding'] = (15,10,15,0) namelbl = ttk.Label(content,text='this is second') cancel = ttk.Button(content, text="変更", command=change_display) content.grid(column=1, row=0) namelbl.grid(column=1, row=0, columnspan=2) cancel.grid(column=2, row=2) root.mainloop() if __name__ == '__main__': first_gui()