実現したいこと
tkinterでのcomboboxを用いた値取得をして,他で使用したい。
発生している問題・分からないこと
イベント発生時に実行する関数で値は取得できるが,その取得した値を他で使用する方法がわからない。
例えば選択肢1を選んだ時に,def文のselected_valueに値を入れると,returnで返ってこないのはなぜでしょうか。
該当のソースコード
import tkinter as tk from tkinter import ttk option = ["選択肢1", "選択肢2", "選択肢3"] def show_selection(event): selected_value = combo.get() # 選択された値を取得 return selected_value root = tk.Tk() combo = ttk.Combobox(root, values=option) combo.pack(pady=20) combo.bind("<<ComboboxSelected>>", show_selection) print(show_selection) root.mainloop()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
function show_selection at 0x000001C67374A940 が返ってきた。
補足
特になし
> def文のselected_valueに値を入れると,returnで返ってこない
> function show_selection at 0x000001C67374A940 が返ってきた。
print(show_selection) としているので、実行結果ではなく show_selection 関数(callable object)そのものが表示されています。
イベントドリブンなプログラムでコールバック関数を直接呼び出すことはしないのですが、例として「選択肢1」を選択した状態でshow_selection() を実行してみます。(引数のイベントオブジェクトは None にしています)
root = tk.Tk()
combo = ttk.Combobox(root, values=option)
combo.current(0)
combo.pack(pady=20)
combo.bind("<<ComboboxSelected>>", show_selection)
print(show_selection(None))
# print(combo.get())
root.mainloop()
# 「選択肢1」と表示されます
回答ありがとうございます。しかし実際はcombo.current(0)のところを動的にしたいのと,
if selected_value == '選択肢2':
x = 'hoge'
if selected_value == '選択肢3':
x = 'hogehoge'
というようにしてxの値が欲しいのですが。どうでしょうか。

回答3件
あなたの回答
tips
プレビュー