如何解决wxPython 使用变量来引用对象
我试图将一个对象的名称传递给一个函数,以便我可以在一个函数内操作它。我有大约 14 个单选按钮,我想根据单击的内容进行更改。使用该函数可以减少代码重用。 然而,对象尝试使用变量名作为对象名,而不是其中包含的字符串。
与字符串本身相比,是否可以使用此字符串来引用对象名称?
self.myObject.GetValue():
self.writeLine('hello','myObject')
self.myObject2.GetValue():
self.writeLine('test','myObject2')
def writeLine(self,str,objName):
print str
self.objName.Enable(False)
self.objName.SetValue(False)
self.objName.Enable(False)
AttributeError: 'myProg' object has no attribute 'objName'
解决方法
忽略已发布代码中的明显错误,因为您将无法运行它,如果您的实际代码如所述,您可以传递 object
而不是 string
。
然后在函数中使用不存在的 object
传递的 not
self.objName
!
这是一段完全没有意义的代码来演示:
import wx
class ButtonFrame(wx.Frame):
def __init__(self,value):
wx.Frame.__init__(self,None)
self.btn1 = wx.Button(self,-1,("Button A"))
self.btn2 = wx.Button(self,("Button B"))
self.btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.btnSizer.Add(self.btn1,wx.RIGHT,10)
self.btnSizer.Add(self.btn2,10)
self.btn1.Bind(wx.EVT_BUTTON,self.OnPressA)
self.btn2.Bind(wx.EVT_BUTTON,self.OnPressB)
self.SetSizer(self.btnSizer)
self.Centre()
self.Show()
self.btn1.Enable(False)
mystr = self.btn1.GetLabel()
self.writeLine(mystr,self.btn1)
self.writeLine('test',self.btn2)
def writeLine(self,str,objName):
print(str)
x = objName.IsEnabled()
objName.Enable(not x)
def OnPressA(self,evt):
self.btn1.SetLabel('Button C')
self.Layout()
def OnPressB(self,evt):
self.btn2.SetLabel('Button D')
self.Layout()
if __name__ == "__main__":
app = wx.App(False)
ButtonFrame(None)
app.MainLoop()
最初,如您所见,按钮 A 已禁用,按钮 B 已启用。
结果应该是:
按钮 A 是 Enabled
按钮 B 是 Disabled
在命令行上打印的应该是 Button A
后跟 test
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。