是否可以检查TextCtrl
是否在键盘焦点下(文本框中的光标闪烁)而未定义EVT_SET_FOCUS
的处理程序?
我只是想做一个快速的布尔检查,以防止wx.Timer
覆盖文本框,如果用户在框中写东西。
答案 0 :(得分:3)
您可以通过查找哪个窗口具有焦点(使用FindFocus
)并将其与TextCtrl窗口进行比较来绕过计时器更新。然后,如果您的TextCtrl具有焦点,您可以不管它。这是一个例子:
import wx
class TestFrame(wx.Frame):
def __init__(self):
self.count = 0
wx.Frame.__init__(self, None, -1, "test frame", size=(200, 100))
self.panel = wx.Panel(self, -1)
button = wx.Button(self.panel, -1, "b", pos=(10, 40))
self.text = wx.TextCtrl(self.panel, -1, `self.count`, size=(50, 25))
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.incr_text)
self.timer.Start(1000)
def incr_text(self, event):
self.count += 1
f = self.FindFocus()
if not f==self.text:
self.text.SetValue(`self.count`)
if __name__=="__main__":
app = wx.PySimpleApp()
TestFrame().Show()
app.MainLoop()