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

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

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

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

Q&A

解決済

1回答

2765閲覧

wxPythonでTextCtrlに入力した値をwx.Button押下時に取得できない

Yshida

総合スコア5

Python

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

1グッド

0クリップ

投稿2020/06/13 08:38

前提・実現したいこと

wxPythonでテキストコントロール(text1)の値をボタン(button1)が押されたときにターミナルに表示しようとしています。
ボタンを押すと以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

例外が発生しました: NameError name 'text1' is not defined File "app2.py", line 22, in OnCloseButton print (text1.GetValue()) File "app2.py", line 30, in <module> app.MainLoop()

該当のソースコード

python

1import wx 2 3class MyFrame(wx.Frame): 4 def __init__(self): 5 wx.Frame.__init__(self, None, -1, 'Title', size=(300,150)) 6 7 # Create widgets. 8 panel = wx.Panel(self) 9 label1 = wx.StaticText(panel, -1, '入力欄:', pos=(0, 50)) 10 text1 = wx.TextCtrl(panel) 11 button1 = wx.Button(panel, -1, "実行") 12 button1.Bind(wx.EVT_BUTTON, self.OnCloseButton) 13 14 # Set sizer. 15 sizer = wx.GridSizer(cols=2, vgap=1, hgap=5) 16 sizer.Add(label1) 17 sizer.Add(text1) 18 sizer.Add(button1) 19 panel.SetSizer(sizer) 20 21 def OnCloseButton(self, event): 22 print (text1.GetValue()) 23 # print (self.panel.text1 24 self.Close() 25 26 27if __name__ == '__main__': 28 app = wx.PySimpleApp() 29 MyFrame().Show(True) 30 app.MainLoop()

補足情報(FW/ツールのバージョンなど)

Windows10 Python 3.7.4 wxPython 4.1.0

teamikl👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

え変数text1 は別スコープのローカル変数です。
OnCloseButton から__init__のローカル変数は直接参照できません。

self.text1 とインスタンス変数にすると、
クラス内の他のメソッドからも参照できるようになります。

投稿2020/06/13 12:08

teamikl

総合スコア8664

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

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

Yshida

2020/06/13 15:51

text1 を self.text1 に変更して解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問