在wxPython中,我试图从一个函数(在实例化器中)定义一个变量以调用另一个函数(不在实例化器中,但仍在类中)
我已经看到人们在自己的处境中解决了其他人的问题,并且我尝试了其他人,但这对我不起作用。
class NamePrompts(wx.Frame):
def __init__(self, *args, **kw):
super(NamePrompts, self).__init__(*args, **kw)
panl = wx.Panel(self)
textboxtest = wx.TextCtrl(panl) # defining textboxtest as a text box
textboxtest.Bind(wx.EVT_TEXT, self.OnKeyTyped)
read = wx.Button(panl, label="Print", pos=(0, 25))
read.Bind(wx.EVT_BUTTON, self.PrintText)
def PrintText(self, event):
typedtext = event.textboxtest.GetString() # attempting to call the same textbox here
wx.StaticText(wx.Panel(self), label=typedtext, pos=(25, 25))
if __name__ == '__main__':
app = wx.App()
frm = NamePrompts(None, title='Basketball Game')
frm.SetSize(0,0,1920,1040)
frm.Show()
app.MainLoop()
我收到此错误:
AttributeError: 'CommandEvent' object has no attribute 'textboxtest'
Traceback (most recent call last):
File "textboxtest.py", line 19, in PrintText
typedtest = event.textboxtest.GetString() # attempting to call the same text box here
答案 0 :(得分:1)
欢迎使用StackOverflow。
实现所需目标的最简单方法是在创建self
时使用wx.TextCtrl
,因此可以从__init__
以外的方法中使用它,然后直接访问{{ 1}}。
wx.TextCtrl
尽管如此,如果您想学习如何通过事件传递自定义变量,则可以检查lambda functions和partial module的使用。