我已经完成了一些测试,并且,不知道为什么, GetValue()会打印我输入的内容,如果父级设置为 self ,框架,但不是它被设置为 self.panel 。我需要 TextCtrl 在面板中。错误在哪里,以及如何使其正常工作?
import wx
class APP(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title)
self.panel=wx.Panel(self)
self.INPUT = wx.TextCtrl(self,-1,value="") ############ Here
self.Bind(wx.EVT_TEXT_ENTER, self.ONPRESSENTER, self.INPUT)
def ONPRESSENTER(self,event):
print self.INPUT.GetValue()
if __name__ == "__main__":
app = wx.App()
frame = APP(None,-1,'TextCtrl in a panel - GetValue Test')
frame.Show(True)
app.MainLoop()
它会以这种方式工作,我们不在面板中,只需将wx.TextCtrl( self , - 1,value =“”)更改为 self.panel < / strong>,它不会打印我们输入的字符串。
原谅我,如果它是愚蠢的东西,我是一个菜鸟:D
Python 2.7
答案 0 :(得分:0)
TextCtrl应该将wx.Panel作为父级。您应始终将面板作为框架中的第一个也是唯一的子窗口小部件,因为它添加了标签支持并使应用程序在所有平台上看起来都正确。如果要捕获每个文本事件,则需要wx.EVT_TEXT,而不是wx.EVT_TEXT_ENTER。请参阅下面编辑的示例:
import wx
class APP(wx.Frame):
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title)
self.panel=wx.Panel(self)
self.INPUT = wx.TextCtrl(self.panel,-1,value="") ############ Here
self.Bind(wx.EVT_TEXT, self.ONPRESSENTER, self.INPUT)
def ONPRESSENTER(self,event):
print self.INPUT.GetValue()
if __name__ == "__main__":
app = wx.App()
frame = APP(None,-1,'TextCtrl in a panel - GetValue Test')
frame.Show(True)
app.MainLoop()