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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1718閲覧

tkinterから戻り値を得る方法について

okawa_k

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/04/06 10:50

プログラミン初心者です。
tkinter上のラジオボタンで選択した内容を、次の処理に進めるために実行ボタンでウィンドウを閉じた後の戻り値として設定したいです。

app.mainloop()は戻り値が設定できない、__init__は初期化されるため戻り値が設定できない(Noneになる)など、なんとなくエラー理由はわかるのですが、解決方法が見つからないためご教授お願い致します。

・menu_radio.py

import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master.title("ラジオボタンの作成") self.master.geometry("300x150") # ラジオボタンの値 self.radio_value = tk.IntVar() # ラジオボタンの作成 radio0 = tk.Radiobutton(self.master, text="印刷", # ラジオボタンの表示名 command=self.radio_click, # クリックされたときに呼ばれるメソッド variable=self.radio_value, # 選択の状態を設定する value=0 # ラジオボタンに割り付ける値の設定 ) radio1 = tk.Radiobutton(self.master, text="データ取込", # ラジオボタンの表示名 command=self.radio_click, # クリックされたときに呼ばれるメソッド variable=self.radio_value, # 選択の状態を設定する value=1 # ラジオボタンに割り付ける値の設定 ) radio2 = tk.Radiobutton(self.master, text="申請", # ラジオボタンの表示名 command=self.radio_click, # クリックされたときに呼ばれるメソッド variable=self.radio_value, # 選択の状態を設定する value=2 # ラジオボタンに割り付ける値の設定 ) # ボタンの作成 button = tk.Button(self.master, text="実行", # ボタンの表示名 command=self.close_window ) # 配置 radio0.pack(anchor=tk.W,pady=0) radio1.pack(anchor=tk.W,pady=10) radio2.pack(anchor=tk.W) button.pack() def radio_click(self): # ラジオボタンの値を取得 value = self.radio_value.get() print(f"ラジオボタンの値は {value} です") def close_window(self): selected_value = self.radio_value.get() self.master.destroy() print('最後に選択したのは:', selected_value) return selected_value if __name__ == "__main__": root = tk.Tk() app = Application(master=root) app.mainloop()

意図としては別の.pyファイルで以下のようにして処理したいと考えています。
selected_value = menu_radio.Application(master=root).mainloop()

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

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

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

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

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

guest

回答1

0

ベストアンサー

ラジオボタンの状態は、Appricationインスタンスの radio_value変数に入っていますから、それを取れるようにすればいいです。
ところが、現状の書き方では、Applicationのインスタンスを保持できず、windowを閉じた後に情報を得ることができません。

以下のようにすれば、取得できるはずです。

python

1radio_app = menu_radio.Application(master=root) 2radio_app.mainloop() 3selected_value = radio_app.radio_value.get()

ちなみに、質問の処理はmainloop()の返り値を取得していますが、mainloop()は返り値がありませんので何も得られません。

投稿2023/04/06 11:49

編集2023/04/07 04:46
TakaiY

総合スコア13687

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

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

okawa_k

2023/04/07 03:37

早速回答いただきありがとうございました。 きちんと返り値を得ることができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問