実現したいこと
メッセージボックス内のラジオボタンからどれか1つを選択して、「OK」ボタンを押すとラジオボタンに設定した値を返し値として取得したい。
発生している問題・分からないこと
ラジオボタンを設定したメッセージボックスは要求通りに表示されますが、
ラジオボタンはどれか1つしか選択できないと理解しているのですが、
1番上以外の項目が選択されています。
現状、表示しているメッセージボックスの画面shotを共有します。
表示されたメッセージボックスから1つラジオボタンをクリックすると、クリックしていないラジオボタンはOFFになりますが、OKボタンを押した後の返し値はありません。
printコマンドで返し値を調べましたが、Noneや""空欄などの応答もありません。
該当のソースコード
import tkinter as tk from tkinter import messagebox as Msgbox from tkinter import simpledialog def CautionMessage(): #プログラム実行前のメッセージ a = "プログラムを実行します。" msg_front() res = Msgbox.askyesno('確認',a) if res == False: msg_front() sys.exit() #messageboxを最前面に表示 def msg_front(): root = tk.Tk() root.attributes('-topmost', True) root.withdraw() root.lift() root.focus_force() def Secret(): global answer item = ["1","2","3","4","5","6"] #root = tk.Tk() root = tk.Toplevel() #root = tk.Tk()から変更 root.geometry("300x200") root.title("選択画面") val = tk.IntVar() #ラジオボタン機構、itemのどれか1つしか選択できない。 for i in range(len(item)): tk.Radiobutton(root, text = item[i], value = i, variable = val).pack(anchor = tk.W) def choice(): global answer ch = val.get() answer = ch #print(item[ch]) root.destroy() root.quit() button = tk.Button(root, text = "OK", command = choice).pack() root.mainloop() return answer CautionMessage() print(Selection())
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ネット上のコードをそのまま試しましたが、返し値を取得できませんでした。
(2024.07.18変更)
前回はラジオボタンに関する部分のみを抜粋しましたが、
前回の抜粋部分は正常に動作していることを確認できました。
他のプログラムが干渉しているみたいですので、再確認した結果
上記コードだとラジオボタンが正常に動作できませんでした。
(2024.07.18)
「root.quit()」をコメント通りの位置に追加しました。
Selection関数の返し値がありましたが、全て「0」が返ってきます。
また、ラジオボタンの機能も正常に動作していませんでした。
補足
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー