这是一个问题的两个部分中的一部分(另一部分是在这里 )
所以,这就是我正在寻找:其绑定到一个函数EVT_TEXT
是等待几秒钟文本控件的事件,然后调用在延迟时间结束的另一功能。 那是很容易的,但是,我想它一个新的每次复位延迟时间EVT_TEXT
生成事件。 我在寻找的效果是有一个用户类型分为文本控件,然后在我以为他们正在做的,我跑在这个问题哪个拼写他们写什么检查的其他部分所描述的功能。
所以,简单的方法我试过是这样的:
def OnEdit(self, event):
for i in range(0,3):
print i
time.sleep(1)
然而,这只是迫使3秒的等待,不管是什么。 我如何“打破”这个功能重设计数器? 提前致谢。
编辑:原来这样做是与线程的方式。 YIPPEE
在满穿的答案,的帮助下建这个教程:
from threading import *
import wx
import time
EVT_RESULT_ID = wx.NewId()
def EVT_RESULT(win, func):
win.Connect(-1, -1, EVT_RESULT_ID, func)
class MyGui(wx.Frame):
def __init__(self):
self.spellchkthrd = None
#lots of stuff
self.input = wx.TextCtrl(self.panel, -1, "", size=(200, 150), style=wx.TE_MULTILINE|wx.TE_LEFT|wx.TE_RICH)
self.Bind(wx.EVT_TEXT, self.OnEdit, self.input)
EVT_RESULT(self, self.OnSplCheck)
def OnEdit(self, event):
if not self.spellchkthrd:
self.spellchkthrd = SpellCheckThread(self)
else:
self.spellchkthrd.newSig()
def OnSplCheck(self, event):
self.spellchkthrd = None
#All the spell checking stuff
class ResultEvent(wx.PyEvent):
def __init__(self):
wx.PyEvent.__init__(self)
self.SetEventType(EVT_RESULT_ID)
class SpellCheckThread(Thread):
def __init__(self, panel):
Thread.__init__(self)
self.count = 0
self.panel = panel
self.start()
def run(self):
while self.count < 1.0:
print self.count
time.sleep(0.1)
self.count += 0.1
wx.PostEvent(self.panel, ResultEvent())
def newSig(self):
print "new"
self.count = 0