我在wxPython
创建了一个程序。它有一个EVT.ACTIVATE
可以激活self.Focus
功能。一切正常,直到我在self.Focus
函数中添加一些条件。如果存在IF条件,程序会在退出时显示:'pythonw.exe'已停止工作。让我解释一下代码:
# partial code of my program
self.Bind(wx.EVT_ACTIVATE, self.Focus)
def FindButton(self, e):
Input = self.search.GetValue()
# starts a thread that queries a big database
t = ProcessThread(str(Input), self.output1, self.output2, self.Object, self.container)
t.start()
def Focus(self, e):
# handles the paste command when window gets activated
try:
if self.menu_clip.IsChecked(): # this is the condition that causes problems
self.search.SetValue('')
self.search.Paste()
self.FindButton(None)
except:
pass
查看.IsChecked
函数中的Focus
条件,会导致问题。想我怎么样?因为我删除IF
条件程序工作正常。所以我必须以这种方式编写函数来防止错误:
def Focus(self, e):
# handles the paste command when window gets activated
try:
self.search.SetValue('')
self.search.Paste()
self.FindButton(None)
except:
pass
但我需要应用这个条件才能让我的程序用户友好,为什么我的程序在退出时会停止响应这个条件?错误细节可能有所帮助,所以我附上了:
Problem signature:
Problem Event Name: APPCRASH
Application Name: pythonw.exe
Application Version: 0.0.0.0
Application Timestamp: 4f84a6ca
Fault Module Name: StackHash_0a9e
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Code: c0000005
Exception Offset: 4d8dcccc
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
答案 0 :(得分:0)
好的,我自己已经为此找到了解决方案。应该以这种方式编写该函数以防止所述崩溃:
def Focus(self, e):
# handles the paste command when window gets activated
if e.GetActive() and self.menu_clip.IsChecked():
self.search.SetValue('')
self.search.Paste()
self.FindButton(None)
在这里我添加e.GetActive
,它在窗口RECEIVES焦点时返回true,但在它失去焦点时返回。
崩溃的可能原因:我认为,当我关闭窗口时,它失去了焦点,而我以前的功能不适合处理这种情况。因为窗口已经被破坏,函数应该在其上工作。也许这就是崩溃的原因。添加e.GetActive
可以处理此错误。