4000 解决PySide+Python子线程更新UI线程
2017-05-03 14:09
447 查看
在我开发的系统,需要子线程去运行,然后把运行的结果发给UI线程,让UI线程知道运行的进度。
首先创建线程很简单
之后我发现用子线程去调用UI线程是行不通的,只能通过信号和槽来实现,于是
首先,定义一个类,让他实现PySide.QtCore.QObject类
然后再把主线程的方法绑定到该槽上去
最后,就可以在子线程执行run方法的时候,就会调用UI线程的方法
首先创建线程很简单
def newThread(self): d = Data() print '子线程的运行' t1 = threading.Thread(target=newThread) t1.setDaemon(True) t1.start()
之后我发现用子线程去调用UI线程是行不通的,只能通过信号和槽来实现,于是
首先,定义一个类,让他实现PySide.QtCore.QObject类
class Data(PySide.QtCore.QObject): #定义信号 mySignal = Signal() def __init__(self): #这句话很重要 super(Data, self).__init__() def run(self): mySignal.emit()
然后再把主线程的方法绑定到该槽上去
QtCore.QObject.connect(Data的实例,QtCore.SIGNAL('mySignal()'),'主线程的方法')
最后,就可以在子线程执行run方法的时候,就会调用UI线程的方法
相关文章推荐
- Android 在其他线程中更新UI线程的解决方法
- Android 在其他线程中更新UI线程的解决方法
- Android 在其他线程中更新UI线程的解决方法
- android 在其他线程中更新UI线程的解决方法
- Android 在其他线程中更新UI线程的解决方法
- OkHttp3几个简单的例子和在子线程更新UI线程的方法
- android子线程加载数据,ui线程实现更新方法
- 详解Android中OkHttp3的例子和在子线程更新UI线程的方法
- 多线程委托之跨线程问题分析--在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(解决方法已更新)
- 夸线程通信出错,不能更新控件的值 要怎么解决??
- 子线程通过接口更新UI线程
- 子线程更新UI会发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方法
- 线程中更新窗口不能直接调用UpdateData函数 的解决办法
- 【Android】关于解决UI线程外控制UI界面更新---升级版(控制SufaceView)
- 子线程更新UI会发生android.view.ViewRoot$CalledFromWrongThreadException异常的解决方法
- 安卓探究ListView+Adapter数据在工作线程中更新引发的crash以及解决方法(一)
- ListView中开启线程查询更新数据导致的ViewHolder错乱问题解决
- 解决 Updatedata不能更新、报错问题。(主要是不同的类、线程中出现的)
- C# Winform使用线程,委托定时更新界面UI控件,解决界面卡顿问题
- c#非委托方式在子线程里操作UI控件(实际上运算逻辑在子线程,更新还是在主线程,解决了UI界面无响应的问题)