当用户单击 textCtrl 时,我试图触发一行代码。最终目标是在单击框时突出显示框的内容。我知道 wx.EVT_SET_FOCUS 可以做到这一点,但它要么有问题,要么我执行错误。这是我的代码:
self.m_textCtrl1 = wx.TextCtrl(self.m_panel2, wx.ID_ANY, wx.EmptyString,
wx.DefaultPosition, wx.Size(100,-1), wx.TE_LEFT)
self.m_textCtrl1.SetMaxLength(8)
self.m_textCtrl1.SetMinSize(wx.Size(100,-1))
self.m_textCtrl1.SetMaxSize(wx.Size(100,-1))
self.m_textCtrl1.Bind(wx.EVT_SET_FOCUS, self.highlightText, self.m_textCtrl1)
这段代码能够在我想要的时候成功触发 highlightText,但由于某种原因,光标从 textCtrl 中移除,导致用户无法选择他的位置、突出显示或退格。任何建议,将不胜感激。作为旁注,有没有办法在 wxFormBuilder 中做到这一点?我使用它构建了我的应用程序,但无法添加焦点事件。它提供的唯一焦点事件似乎是整个窗口。
编辑 9/19/14:Mike,这是我自动生成的 wxFormBuilder 代码,位于gui.py
:
class OrderNumEntry ( wx.Frame ):
def __init__( self, parent ):
# there's a lot more stuff here, but it's irrelevant
self.m_textCtrl1.Bind( wx.EVT_SET_FOCUS, self.highlightText )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def highlightText( self, event ):
event.Skip()
...这是我写的事件处理程序
import wx, gui
class OrderFrame(gui.OrderNumEntry):
def __init__(self, parent):
gui.OrderNumEntry.__init__(self, parent)
# again, a lot more irrelevant stuff here
def highlightText(self, event):
print 'test'
该事件工作正常(因为在我需要时打印测试),但我无法突出显示文本,也看不到我的光标。