attrubu我是python的新手,但不知道如何解决这个问题:
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'”。我究竟做错了什么? /如何将“value”导入我的“clickbutton”函数?
编辑: 好的,这个问题已经解决了。之后我想稍微修改一下:
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-classes)显示包含可能属性(如“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: 好吧,我认为它与“wx”无关,我认为它来自“重新”。 (或者仍然是“wx”?我很困惑)
答案 0 :(得分:3)
将value=1
更改为self.value = 1
。您现在拥有的value
是一个局部变量,在退出构造函数时会被丢弃。
编辑:关于第二个问题,内置函数dir(object)
将为您提供给定对象范围内的名称列表(包括方法)。
More information available here
编辑2: The wxPython documentation may also be of use to you
编辑3:关于theVariable的事情:您尝试过dir(self.theVariable)
吗?