2012-09-18 4 views
0

attrubuI'm 파이썬에 새로운하지만 해결하는 방법을 모른다 "AttributeError : I 버튼을 클릭하면수입 변수

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() 

나는이 오류가 나타납니다 'MyClass에'개체가 어떤 속성이없는 '를 값을 ''. 내가 도대체 ​​뭘 잘못하고있는 겁니까?/"값"을 "클릭 버튼"기능으로 가져 오려면 어떻게해야합니까?

편집 : 좋아,이 중 하나가 해결되었습니다. 그 후 나는 그것을 약간 수정하고 싶었 :

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") 

는 사실이 작품을 .... 그러나 그것은 나에게 내가 마지막으로 한 줄에 "GetStringSelection을()"를 사용한다는 것을 파악하는 데 오랜 시간이 걸렸습니다 . "wx.Choice"(및 다른 wx 클래스)에 대해 가능한 속성 (예 : "GetStringSelection()")이있는 목록을 표시 할 수 있습니까? 아니면 이것에 대한 좋은 웹 사이트가 존재합니까?

편집 2 : 다시 한번 감사드립니다! 와 나는 (단계별로 요구 죄송합니다) 마지막 질문이 있습니다

dir(wx.Choice) 

작품,하지만 난 "VarDecl"라는 obejct에 주어진 코드가 있습니다. 이것을 묻는다면 오류가 발생합니다.

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"과는 아무 상관이 없다고 생각, 나는 그것을 "다시"에서 유래 생각합니다. (또는 여전히 "wx"입니까? 혼란 스럽습니다)

답변

3

변경 value=1에서 self.value = 1으로 변경하십시오. 이제 value은 로컬 변수이므로 생성자를 종료 할 때 무시됩니다.

EDIT : 두 번째 질문에 대해서는 내장 함수 dir(object)이 주어진 개체의 범위에있는 이름 (메서드 포함) 목록을 제공합니다. More information available here

편집 2 :The wxPython documentation may also be of use to you

편집 3 : theVariable 일에 대해 : 당신은 dir(self.theVariable)를 시도?

+0

감사합니다. 그건 빨리;) – Munchkin

+0

나는 그것을 시도했지만 성공하지 않고. 나는 VarDecl을위한 그런 속성이 없다는 힌트를 얻었습니다. 다른 방법으로 가야합니다 : 먼저 "theVariable"을 저장하고 self.editor.GetText()와 비교하십시오. 나에게는 약간 까다 롭지 만 최선을 다합니다. – Munchkin