0

attrubuPython は初めてですが、これを解決する方法がわかりません:

import wx

class myclass(wx.Frame):

    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,'Frame',size=(300,200))
        panel=wx.Panel(self)

        button=wx.Button(panel,label="click me",size=(120,60))
        self.Bind(wx.EVT_BUTTON, self.clickbutton, button)

        value=1

    def clickbutton(self, event):
        if self.value == 1:
            print("success")

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=myclass(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

ボタンをクリックすると、「AttributeError: 'myclass' オブジェクトに属性 'value' がありません」というエラーが表示されます。私は何を間違っていますか?/ 「値」を「クリックボタン」関数にインポートするにはどうすればよいですか?

編集:OK、これは解決されました。その後、少し変更したいと思いました:

    self.dropdown=wx.Choice(panel,pos=(130,60))
    list = ['banana', 'apple', 'strawberry']
    self.dropdown.AppendItems(strings=list)

def clickbutton(self, event):
    if self.dropdown.GetStringSelection() == 'apple':
        print("success")

実際、これは機能します....しかし、最後の2行目で「GetStringSelection()」を使用する必要があることを理解するのに長い時間がかかりました。「wx.Choice」(およびその他の wx クラス) の可能な属性 (「GetStringSelection()」など) を含むリストを表示するにはどうすればよいですか? または、これに適したウェブサイトはありますか?

編集 2: ありがとうございます。最後に質問があります (順を追って質問して申し訳ありません)。

dir(wx.Choice)

動作しますが、「VarDecl」と呼ばれるオブジェクトを持つ特定のコードがあります。このため、尋ねるとエラーが発生します

dir(wx.VarDecl)

この VarDecl オブジェクトの「HasChanged」のような属性を探しています。

Traceback (most recent call last):
File [...]    
if self.theVariable.HasChanged():
AttributeError: 'VarDecl' object has no attribute 'HasChanged'

Edit3: OK、「wx」とは何の関係もないと思います。「re」から来ていると思います。(またはまだ「wx」? 私は混乱しています)

4

1 に答える 1

3

に変更value=1self.value = 1ます。これvalueはローカル変数であり、コンストラクターを終了すると破棄されます。

編集: 2 番目の質問については、組み込み関数dir(object)は、指定されたオブジェクトのスコープ内の名前 (メソッドを含む) のリストを提供します。 詳細はこちら

編集 2: wxPython のドキュメントも役に立つかもしれません

EDIT 3: theVariable について: 試しましたdir(self.theVariable)か?

于 2012-09-18T09:12:44.197 に答える