在另一个wx.textctrl中输入的python代码中显示wx.textctrl wigdet中的当前输出

时间:2013-02-06 11:43:11

标签: python-2.7 wxpython exec

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

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

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

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

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

我试图使用线程但是在线程的情况下使用exec存在问题。

1 个答案:

答案 0 :(得分:0)

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

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

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