我对wxpython很新,但还是要学习进程或线程。 每当处理数据时,我一直在线检查我的问题与非响应窗口。我在网上看到了不少例子,但我找不到解决我的问题的方法(可能我没有说明问题)因为我不使用线程,它只是一个使用while循环的普通简单程序而且必须是在while循环中大约150secs,同时我已经将打印文本重定向到日志窗口,当我正在进行另一个选项卡时,窗口显示没有响应,而这个程序正在进行中,请建议我解决方案。 代码是这样的 我在重定向文本时使用了Mike的逻辑。
class RedirectText(object):
def __init__(self,aWxTextCtrl):
self.out=aWxTextCtrl
def write(self,string):
self.out.WriteText(string)
Class GUI(wx.Frame):
def __init__(self, parent):
# All the frame work
# redirected print to the stdout
def run(self, input):
#calls another operation
self.set_BankID(BankID, serSCU,SerialLogResult)
def set_BankID(self,BankID, serSCU,SerialLogResult):
#while loop
iteration=0
While iteration < 3:
wx.Yield()
while process = 0:
wait 150 secs
#end of inner while loop
#condition met for iteration
#End of outer while loop
if __name__ == '__main__':
app=wx.App(False)
frame =GUI(None)
frame.Show()
app.MainLoop()
答案 0 :(得分:0)
问题是您正在阻止主循环,因此GUI无法再自行更新。您需要将该长时间运行的进程放入一个线程中,并使用wxPython线程安全方法之一将更新发送到GUI。这些方法如下:
您可以在以下位置阅读各种方法:
我更喜欢使用wx.CallAfter,因为我认为这是最简单的。