前提・実現したいこと
pythonのtkinterを使用して、画面遷移をして、最後に結果を載せるというアプリの実装をしたいです。
ですが、開発中にウェブを探しても分からない問題が発生しました。
それは、tkinterの一つ目のウィンドウから、ボタンを介して、二つ目のウィンドウに移動させる(ただし、ほかのウィンドウで同じことをしたとき、計算関数などのような、ログデータを記憶させる方法)という感じです。
object指向に慣れていないため、そのまま一つ一つ記述する方法で作っています。
発生している問題・エラーメッセージ
このとおり作業を行う(start.place(x=550,y=590)のあとにstartPage.mainloop()を導入した場合、
それぞれのウィンドウが独立して、順番に実行されます。ただしボタンは機能していません。
具体的には、startPageを右上にある✖のクリックによって、終了させるとnamePageが出てきます。
この場合のぐたいてきなエラーは、namePage is not definedです。
namePageが定義できていないという事実はわかったのですが、どう定義すればいいのかもわからない状況です。
python
1import tkinter 2 3def create_window(A, B, C): 4 A=quit(A) 5 B= tkinter.Toplevel(B) 6 C.configure(state="disabled") 7 8 9startPage = tkinter.Tk() 10startPage.title("犬猫系女子診断") 11canvas = tkinter.Canvas(startPage, width=1260, height=700) 12canvas.pack() 13picture1 = tkinter.PhotoImage(file=r"C:\Users\Kazumi Kitazawa\Desktop\dog_or_cat\title.png") 14canvas.create_image(630, 345, image=picture1) 15start = tkinter.Button(startPage,text="診断する", font=("UD デジタル 教科書体 N-B", 40), fg="orange",command=lambda:create_window(startPage,namePage,start)) 16start.place(x=550, y=590) 17start.mainloop() 18 19namePage = tkinter.Tk() 20namePage.title("ニックネーム入力") 21canvas1 = tkinter.Canvas(namePage, width=1260, height=700) 22canvas1.pack() 23picture2 = tkinter.PhotoImage(file=r"C:\Users\Kazumi Kitazawa\Desktop\dog_or_cat\nickname.png") 24canvas1.create_image(630, 345, image=picture2) 25 26Namecreate = tkinter.Entry(width=15,font=("UD デジタル 教科書体 N - B", 40)) 27Namecreate.place(x=430, y=530) 28Namebutton=tkinter.Button(namePage,text="ニックネーム登録完了",font=("UD デジタル 教科書体 N - B", 40), fg="orange") 29Namebutton.place(x=360,y=600) 30 31namePage.mainloop()
試したこと
lambda関数を導入しました。lambda関数をどう設定するかで、うまく動作するのではないかと仮説を立てています。
ただし、その動作を命令する方法を知りません(ネットで類似の事例が見つかりませんでした)
補足情報(FW/ツールのバージョンなど)
python 3.7
Visial Code Studioを開発環境にしています。
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー