wxPython - GetValue()和面板

时间:2014-03-28 17:24:20

标签: python wxpython

我已经完成了一些测试,并且,不知道为什么, 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

1 个答案:

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