0

我在我的 wxApp 中使用了两个 wx.TextCtrl 小部件。
第一个用于由应用用户提供 Python 代码,例如:

from time import sleep  
for i in range(4):  
    print i  
    sleep(4)  

第二个用于显示输出。
为了处理用户代码,我使用 EXEC。
但是我在动态显示输出时遇到了问题。

当前输出显示在第二个 wx.TextCtrl 小部件中,但在处理整个代码之后(16 秒后)。

我想在上面的代码中每 4 秒显示一次用户的代码输出。怎么做?

我试图使用线程,但是在线程的情况下使用 exec 会出现问题。

4

1 回答 1

0

time.sleep 将阻塞 GUI 的主循环,这就是您看不到任何输出的原因。如果你想走那条路,你必须把它放到一个单独的线程中。否则,您可以使用 wx.Timer。

这是一个教程: http: //www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/

我不认为你应该使用 Python 的 exec 命令。这可能导致代码注入问题。相反,您应该考虑使用 subprocess 模块。

于 2013-02-06T14:36:27.363 回答