Multithreading wxpyton-许多模块中的线程

Multithreading wxpyton-许多模块中的线程,multithreading,wxpython,Multithreading,Wxpython,我正在尝试创建一个简单的框架,它将运行longrun过程,但将在不同的窗口(对话框)中显示计数,但它不起作用(staticText1未更新)。。。这是我的密码: 主框架(带一个按钮的简单框架) 对话框(带有一个静态文本的简单对话框): 你能更详细地描述一下你期望发生的事情和实际发生的事情吗?看看你的代码,你的计时器是20,但你的测试线程只有5,所以我希望你的对话框是简单的,如果你发布运行的代码,编辑会更容易帮助你。不要发布单独的文件,一定要包含基本的应用程序结构,这样我们就不必弄清楚如何运行它。

我正在尝试创建一个简单的框架,它将运行longrun过程,但将在不同的窗口(对话框)中显示计数,但它不起作用(staticText1未更新)。。。这是我的密码:

主框架(带一个按钮的简单框架)

对话框(带有一个静态文本的简单对话框):


你能更详细地描述一下你期望发生的事情和实际发生的事情吗?看看你的代码,你的计时器是20,但你的测试线程只有5,所以我希望你的对话框是简单的,如果你发布运行的代码,编辑会更容易帮助你。不要发布单独的文件,一定要包含基本的应用程序结构,这样我们就不必弄清楚如何运行它。你让我们做的工作越少,得到好答案的机会就越大。
import wx
import time
from threading import Thread
import Dialog1

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, ] = [wx.NewId() for _init_ctrls in range(2)]

class Frame1(wx.Frame):
def test1(self):
    for i in range(self.delays):
        time.sleep(1)

def _init_ctrls(self, prnt):
    # generated method, don't edit
    wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
          pos=wx.Point(589, 259), size=wx.Size(178, 128),
          style=wx.DEFAULT_FRAME_STYLE, title='Frame1')

    self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='button1',
          name='button1', parent=self, pos=wx.Point(0, 0), size=wx.Size(178,
          128), style=0)
    self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button,
          id=wxID_FRAME1BUTTON1)

def __init__(self, parent):
    self._init_ctrls(parent)
    self.delays = 5
    self.timer = wx.Timer(self)

def OnButton1Button(self, event):
    self.testThread = Thread(target=self.test1)
    self.testThread.start()
    #self.Show(False)
    self.dlg = Dialog1.Dialog1(self)
    self.dlg.ShowModal()                    
    self.button1.Disable()
    self.Bind(wx.EVT_TIMER, self.PollThread)
    self.timer.Start(20, oneShot=True)

    event.Skip()
def PollThread(self, event):
    if self.testThread.isAlive():
        self.Bind(wx.EVT_TIMER, self.PollThread)
        self.timer.Start(200, oneShot=True)
        self.dlg.staticText1.SetLabel(self.dlg.staticText1.GetLabel()+".")
    else:
        self.button1.Enable()
        self.dlg.Destroy() 
import wx

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1STATICTEXT1, ] = [wx.NewId() for _init_ctrls in range(2)]

class Dialog1(wx.Dialog):
def _init_ctrls(self, prnt):
    # generated method, don't edit
    wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
          pos=wx.Point(451, 295), size=wx.Size(544, 59),
          style=wx.DEFAULT_DIALOG_STYLE, title='Dialog1')

    self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
          label=u'Please wait', name='staticText1', parent=self,
          pos=wx.Point(56, 24), size=wx.Size(95, 17), style=0)

def __init__(self, parent):
    self._init_ctrls(parent)