我在wxApp中使用了两个wx.TextCtrl小部件 第一个用于通过app用户提供Python代码,例如:
from time import sleep
for i in range(4):
print i
sleep(4)
第二个用于显示输出 要处理用户代码,我使用EXEC 但是我在动态显示输出时遇到了问题。
目前,输出显示在第二个wx.TextCtrl小部件中,但是在处理完整个代码之后(16秒之后)。
我想在上面的代码中每4秒显示一次用户的代码输出。 怎么做?
我试图使用线程但是在线程的情况下使用exec存在问题。
答案 0 :(得分:0)
time.sleep会阻止GUI的主循环,这就是你没有看到任何输出的原因。如果你想走那条路,你必须把它放到一个单独的线程中。否则,您可以使用wx.Timer。
这是一个教程:http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/
我认为你不应该使用Python的exec命令。这可能会导致代码注入问题。相反,您应该考虑使用子进程模块。