Python中如何使用多线程保持GUI的响应


今天就跟大家聊聊有关Python中如何使用多线程保持GUI的响应,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
改善按钮对进度栏的控制我们现在将其改进一下:第一个按钮用来启动进度栏;第二个按钮用来停止进度栏;第三个按钮用来重置进度栏;在之前的MainWindow类中,我们对进度条和按钮的事件设置三个方法:我们将上述三个方法修改一下,改写成四个方法:start_progressbar(self):用于启动进度栏stop_progressbar(self):用于停止进度栏reset_progressbar(self):用于重置进度栏update_progressbar(self):用于绑定三个按钮到上述三个方法上
运行程序,看看效果:当我们点击“开始”按钮,进度栏便开始增加,当我们点击“停止按钮”,进度栏便停止增加,当我们点击“重置”按钮,进度栏便归零。
控制进度栏增长速度
在启动进度栏的start_progressbar()方法中,我们通过while循环来增加进度栏,每次增加0.0001,在这样的情况下,进度栏增长得很快。其实,我们可以通过time模块的sleep()方法冻结进度栏,以达到降低进度栏增长速度的效果。修改start_progressbar()方法如下:我们让进度栏的数值增长停歇0.3秒,看看效果:进度栏的增长速度确实比之前缓慢了很多。
使用QThread线程
PyQt中QtCore的QThread对象提供了一个独立于平台的方式来管理线程。QThread对象通过调用run()方法来执行线程,默认情况下,run()方法通过调用exec()方法来启动事件的循环。下面,我们通过一个进度栏计数器的示例,来演示一下QThread的使用。我们新建一个继承自QtCore.QThread的类RunThread(),并在其中定义一个run()方法用来启动线程,定义一个stop()方法用来停止线程。首先,我们通过实例化QtCore.pyqtSignal(int)定义了一个新的信号counter_value,这个值会用来更新进度栏。然后设置了RunThread()类中的一些默认属性。在run()方法中,我们通过一个while循环来不断累加计数器的值,并且将累加的计数器的值通过定义的信号counter_value发送出去。在stop()方法中,我们设置线程的运行状态为Fasle,然后使用QThread的terminate()方法确保线程完全的被停止。然后,要应用这个进度栏计数器,我们还需要在主窗口类MainWindow()中添加和修改一番:添加一个进度栏计数器方法progressbar_counter(),用来启动线程管理器:添加一个进度栏设置方法set_progressbar(),用来设置进度栏的值:修改一下进度栏的启动方法start_pr 香港云主机ogressbar()。删除while循环,添加进度栏计数器到其中(因为进度栏计数器中已经实现了while循环增加数值):修改进度栏的停止方法stop_progressbar(),添加线程的stop()方法用来停止线程:修改完成后,我们运行程序,看看效果:通过终端打印出来的信息,我们可以直观的看到QThread线程的管理控制。看完上述内容,你们对Python中如何使用多线程保持GUI的响应有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注开发云行业资讯频道,感谢大家的支持。

相关推荐: Hadoop 2.x常用端口及查看方法

一、常用端口所有端口协议均基于TCP。部分端口说明参见:http://blog.csdn.net/xiaolang85/article/details/8647602二、查看方法对于 NameNode 和 DataNode 可通过如下Web页面查看其信息:I.…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/11 17:20
下一篇 08/11 17:20

相关推荐