wxpython textctrl在处理数据时消失



我有一个非常奇怪的问题,我已经尝试解决了一段时间,但没有任何运气。

我的程序由一个主框架、一个菜单栏组成,菜单栏下面有一个只读模式的文本控件,下面是一个状态栏。

在我的主类中,我有许多函数,下面列出了其中一个。在菜单事件上,调用与该菜单事件相关联的函数。下面的函数应该将要处理的文件的名称打印到textctrl,然后该文件应该被处理,然后它移动到下一个要打印的文件到textctll,然后处理该文件等

取而代之的是textctrl框&在处理所有文件时,状态栏完全消失。处理完成后,它会重新出现,并打印所有文本。

我不知道它为什么会消失。我已经用许多不同的方式在函数中移动了代码,以尝试&解决问题,但无济于事。

任何帮助都将不胜感激。

---编辑---代码已删除

听起来发生的事情是您的进程忙于工作,因此它不会将任何周期交给GUI来刷新。

您需要做的是将繁忙的进程移到它自己的线程中。

你会想做一些类似的事情

import threading
class Encrypt(threading.Thread):
    def __init__(self, threadNum, asset, window):
        threading.Thread.__init__(self)
        self.threadNum = threadNum
        self.window = window
        self.signal = True
    def run(self):
        while self.signal:
            do_stuff_that_is_cpu_intensive
            for self.path in self.paths: #etc..

在你的主wx。帧类别:

class Frame(wx.Frame):
def __init__(self, *args, **kwargs):
    super(Frame, self).__init__(*args, **kwargs)
    self.InitUI()
    self.Show()
    self.count = 0 # simple thread counter. 
    self.threads = [] # this lets you iterate over your threads if you ever need to
def OnEncrypt(self):
    self.count += 1
    thread = Encrypt(self.count, asset, self)
    self.threads.append(thread)
    thread.start()

请在此处查看更详细的方法和解释:http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/

相关内容

  • 没有找到相关文章

最新更新