質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1148閲覧

Python/Tkinterを使用して画面遷移

o-ishi_kenta05

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/07 14:32

前提・実現したいこと

PythonのTkinterを使用して画面遷移を行いたい。
ほかの質問を参考に試行錯誤したが、実現できない。
よろしくお願いいたします。

発生している問題・エラーメッセージ

ラジオボタンのrbt1とrbt2で画面遷移を行いたい。
・rbt1を選択中はlbl1とbtn1のみを表示させたい
・rbt2を選択中はlbl2とbtn2のみを表示させたい
・rbt1とrbt2は常に表示する
しかし、実際にはrbt1⇒rbt2⇒rbt1もしくはrbt2⇒rbt1⇒rbt2
と選択すると両方とも表示されてしまいます。
(希望)rbt1選択時
(希望)rbt2選択時
(実際)両方とも表示されてしまう

該当のソースコード

Python

1 2import tkinter as tk 3 4rt = tk.Tk() 5rt.geometry("400x560") 6var = tk.IntVar() 7var.set(0) 8def push_rbt1(): 9 def push_btn1(): 10 print("あなたは画面1で押しています。") 11 lbl1 = tk.Label(text = "PAGE1").place(x=50,y=150) 12 btn1 = tk.Button(text = "画面1",command = push_btn1).place(x=250,y=150) 13def push_rbt2(): 14 def push_btn2(): 15 print("あなたは画面2で押しています。") 16 lbl2 = tk.Label(text = "PAGE2").place(x=50,y=200) 17 btn2 = tk.Button(text = "画面2",command = push_btn2).place(x=250,y=200) 18 19rbt1 = tk.Radiobutton(value = 0, variable=var,text="画面1",command = push_rbt1).place(x=50,y=100) 20rbt2 = tk.Radiobutton(value = 1, variable=var,text="画面2",command = push_rbt2).place(x=150,y=100) 21 22rt.mainloop()

試したこと

ネットの情報を参考にplace_forget()など試しましたができませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

やり方はいろいろあるはずですが、簡単に書くならこんな感じでいいのでは。

python

1import tkinter as tk 2 3rt = tk.Tk() 4rt.geometry("400x560") 5var = tk.IntVar() 6var.set(0) 7 8# 関数内で作ると面倒なのでウィジェットとコールバックの作成はグローバルで 9def push_btn1(): 10 print("あなたは画面1で押しています。") 11 12def push_btn2(): 13 print("あなたは画面2で押しています。") 14 15lbl1 = tk.Label(text = "PAGE1") 16btn1 = tk.Button(text = "画面1",command = push_btn1) 17lbl2 = tk.Label(text = "PAGE2") 18btn2 = tk.Button(text = "画面2",command = push_btn2) 19 20def push_rbt1(): 21 # 消す 22 lbl2.place_forget() 23 btn2.place_forget() 24 25 # 置く 26 lbl1.place(x=50,y=150) 27 btn1.place(x=250,y=150) 28 29def push_rbt2(): 30 # 消す 31 lbl1.place_forget() 32 btn1.place_forget() 33 34 # 置く 35 lbl2.place(x=50,y=200) 36 btn2.place(x=250,y=200) 37 38rbt1 = tk.Radiobutton(value = 0, variable=var,text="画面1",command = push_rbt1).place(x=50,y=100) 39rbt2 = tk.Radiobutton(value = 1, variable=var,text="画面2",command = push_rbt2).place(x=150,y=100) 40 41push_rbt1() # 初期状態で画面1が出るように 42 43rt.mainloop() 44

投稿2019/08/07 23:55

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

o-ishi_kenta05

2019/08/08 09:41

そういう方法があるんですね!丁寧な回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問