前提・実現したいこと
プログラムの条件分岐の中で、
変数hoge
が空白のときに tkinter のラジオボタンを用いてユーザー入力をする
という処理をさせたいと考えています。
該当のソースコード
Python
1#!python3.7 2# -*- coding: utf-8 -*- 3import tkinter as tk 4 5def hoge_input(): 6 root = tk.Tk() 7 root.option_add('*font', ('FixedSys', 14)) 8 root.title('えらぶ') 9 selection = ['選択肢A','選択肢B','選択肢C'] 10 rdo_var = tk.IntVar() 11 12 for i in range(len(selection)): 13 tk.Radiobutton(root, value=i, variable=rdo_var, text=selection[i]).pack(anchor = tk.CENTER,padx=30,pady=3) 14 15 def btn_click(): 16 num = rdo_var.get() 17 hoge = selection[num] 18 root.destroy() 19 print(hoge) 20 return hoge 21 22 btn = tk.Button(root, text='OK', command=btn_click) 23 btn.pack(fill ='x',padx=40,pady=3) 24 root.mainloop() 25 26 27if __name__ == "__main__": 28 # hogeを格納する関数hoge_search()→hogeに該当する値が無かった場合にユーザー選択 29 # hoge_search() 30 31 if hoge == '': 32 hoge_input() 33 34 # ここでユーザーが選択した選択肢A/B/Cを表示させたい 35 print(hoge) 36 # None
わかっていること
btn_click
のイベントのタイミングで変数を格納したいのですが、
return
してもtk.Button(root, text='OK', command=btn_click)
ここに値が戻ってしまう形になってしまい
main関数のhoge
への値の渡し方がわかりません。
def btn_click(): num = rdo_var.get() hoge = selection[num] root.destroy() print(hoge) #この時点ではhogeが格納されている return hoge #returnされない
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/06 00:26 編集
2020/02/06 01:00 編集
2020/02/06 01:20 編集
2020/02/06 02:22 編集