wxpython textctrl在处理数据时消失

wxpython textctrl在处理数据时消失,python,wxpython,textctrl,Python,Wxpython,Textctrl,我有一个非常奇怪的问题,我一直在试图解决一段时间了,现在没有任何运气 我的程序由一个主框架和一个菜单栏组成,菜单栏下面是一个只读模式的文本控件,它下面是一个状态栏 在我的主类中,我有许多函数,下面列出了一个。在菜单事件上,调用与该菜单事件关联的函数。下面的函数应该将要处理的文件的名称打印到textctrl,然后处理该文件,然后移动到下一个要打印到textctrl的文件,然后处理该文件等等 相反,在处理所有文件时,textctrl框和状态栏将完全消失。处理完成后,它会重新显示,并打印所有文本 我不

我有一个非常奇怪的问题,我一直在试图解决一段时间了,现在没有任何运气

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

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

相反,在处理所有文件时,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.Frame类中:

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()

请参阅此处更详细的方法和说明:

您好,多谢。看来这正是我需要做的来解决我的问题。我会在第二天左右玩一玩。我对编程还是很陌生&python,所以可能需要一段时间。克林顿,别担心,不久前我和你在同一条船上。这很快就会有意义的。