2016-06-28 5 views
0

変数self.resultを印刷しようとしています。最終的な目標はそれを次の処理に使用することですが、今は変数にアクセスしたいので、印刷するように選択しましたが、私はこのメッセージを受け取ります:Pythonでクラスの変数を印刷するには

"Swxオブジェクトのプロキシタイプ 'wxStaticText *' at 0x23fed48> "

私のコードは以下の通りです。

import wx 

class ExampleFrame(wx.Frame): 
def __init__(self, parent): 
    wx.Frame.__init__(self, parent) 

    self.panel = wx.Panel(self) 
    self.quote = wx.StaticText(self.panel, label="is Awesome") 
    self.result = wx.StaticText(self.panel, label="") 
    self.result.SetForegroundColour(wx.RED) 
    self.button = wx.Button(self.panel, label="Save") 
    self.lblname = wx.StaticText(self.panel, label="Your name:") 
    self.editname = wx.TextCtrl(self.panel, size=(140, -1)) 

    # Set sizer for the frame, so we can change frame size to match widgets 
    self.windowSizer = wx.BoxSizer() 
    self.windowSizer.Add(self.panel, 1, wx.ALL | wx.EXPAND) 

    # Set sizer for the panel content 
    self.sizer = wx.GridBagSizer(5, 5) 
    self.sizer.Add(self.quote, (0, 1)) 
    self.sizer.Add(self.result, (0, 0)) 
    self.sizer.Add(self.lblname, (1, 0)) 
    self.sizer.Add(self.editname, (1, 1)) 
    self.sizer.Add(self.button, (2, 0), (1, 2), flag=wx.EXPAND) 

    # Set simple sizer for a nice border 
    self.border = wx.BoxSizer() 
    self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5) 

    # Use the sizers 
    self.panel.SetSizerAndFit(self.border) 
    self.SetSizerAndFit(self.windowSizer) 

    # Set event handlers 
    self.button.Bind(wx.EVT_BUTTON, self.OnButton) 

def OnButton(self, e): 
    self.result.SetLabel(self.editname.GetValue()) 



app = wx.App(False) 
frame = ExampleFrame(None) 
frame.Show() 
print frame.result 
app.MainLoop() 
+0

これはエラーではありません。あなたが得ているのは変数の__repr __()結果で、変数:型とアドレスに関する最も基本的な情報が得られます。 –

+0

どうすれば変数の値を取得できますか?何か案は? – Amit

+0

これは変数ではなくオブジェクトです。どのテキストを入手したいですか? –

答えて

0

あなたの質問は意味がありません:なぜ静的テキストのラベルを読みたいのですか?そのラベル(!、StaticTextに値がない)はイベントによって設定され、という名前のeditname(私が探しているものだと思います)の値を読み取っています。しかし、あなたの質問に答えるために:StaticText変化からラベルを読み取る方法:

print frame.result 

print frame.result.GetLabel() # or GetLabelText() 

にラベルがフレーム作成後、まだ直接設定されていないので、これは空の文字列になります。

documentation parent object of StaticTextを参照してください。

+0

ありがとうございました。質問をしながら私は明確ではなかった、申し訳ありません。私はそれが 'onbutton'イベントによって設定された後にラベルを印刷したいと思います。しかし、あなたが指摘したように、現在の方法で空の文字列を返します。空の文字列ではなく、入力されたテキストを返す方法はありますか? – Amit

+0

GUIアプリケーションの原因と結果を理解していないという印象を受けているので、あなたの質問に答えてください: '' print frame.result.GetLabel() ''という文を ' 'OnButton''イベントハンドラです。アプリを起動します。テキストを入力してください。 [保存]ボタンを2回クリックします。楽しい。私の答えを受け入れることを忘れないでください。私はここから出ている。 – nepix32

+0

あなたは正しいかもしれません。ヒントをお寄せいただきありがとうございます。私は質問に答えていますが、質問を正しく表現できないため、私が探していたものは得られませんでした。私は、 'save'ボタンによって印刷動作を促したくありません。場合によっては2番目のスクリプトによってオブジェクトを個別に呼び出すことができるようにしたいと考えています。最初に同じスクリプトから呼び出す方法を理解してから、2番目のスクリプトを実行するように計画しました。とにかく、私は自分の研究をして、理解します。再度、感謝します – Amit