クラス内のメソッドで得られた値を別のクラスから参照したいです。
具体的にはTkinterのEntryウィジェットに入力された値を別のクラスから参照しようとしています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
クラスを作って直接ウィジェットのインスタンスを共有する等、
Python で工夫してできる方法が幾つか方法がありますが、
tkinter ということで、Tkから提供されてる方法を紹介します。
名前を付けて検索
ウィジェットにはインスタンス生成時に name が付けられ
ルート・ウィジェットから nametowidget で検索可能です。
大抵の GUI ツールキットで、名前でオブジェクトを探す仕組みが提供されてます。
動的にウィジェットを大量に生成する場合などは命名で工夫が必要になるかもしれません。
以下、標準的な tk のコードは省いて、設定方法と参照方法のみ記述します
python
1entry = Entry(root, name="entry")
python
1print(root.nametowidget("entry").get())
実際は name というよりは、ルートウィジェットからの path で Tk での命名規則に従います。
frame = Frame(root, name="frame")
entry = Entry(frame, name="entry")
であれば root から参照する時は root.nametowidget("frame.entry") です
StringVar() を使い共有する
python
1nameVar = StringVar() 2entry = Entry(root, textvariable=nameVar)
python
1print(nameVar.get())
例えば、他のウィジェットで Label(textvariable=nameVar) として
データが変更されると表示も自動的に変わるといったデータバインディング的な事が可能で
.trace メソッドでコールバックを仕掛けることができて、
変数の値が変更されると特定の関数を呼び出す的な通知も可能です。
投稿2016/11/05 13:01
総合スコア8664
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/06 07:05 編集
2016/11/06 07:17
2016/11/06 08:54 編集
2016/11/07 06:05