多个文件多个线程间传递参数及参数应用(文本框显示)
假设在一个Frame框架中,定义一个文本框用于显示信息(持续更新)
#coding:UTF-8 #!/usr/bin/env python #author by No9527 import wx from threading import Thread import threading import queue class MainFrameUI(wx.Frame): #@author: 9527 def __init__(self,parent): wx.Frame.__init__(self,parent,-1,title="这是一个Frame框架",pos=wx.DefaultPosition, style=wx.SIMPLE_BORDER|wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX)
#设置panel面板3
self.panel3 = wx.Panel(self,pos=(-1,350),size=(1100,450))
self.panel3.SetBackgroundColour("#00cc99")
# 设置log信息显示面板 self.log_info0 = wx.StaticText(self.panel3, label="log信息显示区", pos=(30, 15),size = (480,50), style = wx.ALIGN_CENTRE_HORIZONTAL) self.log_info0.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.NORMAL)) self.log_info1= wx.TextCtrl(self.panel3,value="log信息显示在这里",pos=(30, 45),size = (1020,300), style = wx.TE_READONLY|wx.TE_MULTILINE)
定义一个接收信息的队列
#消息定义队列 self.QueueInfo = queue.Queue(100000)
定义一个显示方法(持续更新)
def LogInfodisplay(self): #@author: 9527 while True : AnswerInfo = self.QueueInfo.get() #调用UI的文本控件log_info1添加文本AppendText() self.log_info1.AppendText(AnswerInfo) #计算文本控件行数 Text_counter = self.log_info1.GetNumberOfLines() #判断行数长度,移除前1000字符串 if Text_counter > 200: self.log_info1.Remove(0,1000)
假设现在启用一个线程,调用一个外部文件,行驶其相关功能,那么就把队列作为参数传递给那个文件
def GitlabINfoGet(self,event):
#创建一个Dialog线程
td007 = Thread(target=self.Use_GITlabinfoget())
td007.setDaemon(1)
td007.start()
def Use_GITlabinfoget(self):
self.GITlabDialog = GITlabDialog.GitlabINfoGet(self.QueueInfo)
在独立文件的类初始化是就作为参数传入
class GitlabINfoGet(): def __init__(self,queueinfo): self.queue01 = queueinfo #调用put方法吧信息压入队列 self.queue01.put("这就是示例信息")
如此一来,就完成了线程间和文件间的数据传递了;会通过LogInfodisplay()方法持续更新被压入的信息。

浙公网安备 33010602011771号