成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python中如何使用多線程保持GUI的響應

今天就跟大家聊聊有關(guān)Python中如何使用多線程保持GUI的響應,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比永泰網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式永泰網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋永泰地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

改善按鈕對進度欄的控制

我們現(xiàn)在將其改進一下:

  • 第一個按鈕用來啟動進度欄;

  • 第二個按鈕用來停止進度欄;

  • 第三個按鈕用來重置進度欄;

Python中如何使用多線程保持GUI的響應

在之前的MainWindow類中,我們對進度條和按鈕的事件設(shè)置三個方法:

Python中如何使用多線程保持GUI的響應

我們將上述三個方法修改一下,改寫成四個方法:

  • start_progressbar(self):用于啟動進度欄

  • stop_progressbar(self):用于停止進度欄

  • reset_progressbar(self):用于重置進度欄

  • update_progressbar(self):用于綁定三個按鈕到上述三個方法上

Python中如何使用多線程保持GUI的響應

運行程序,看看效果:

Python中如何使用多線程保持GUI的響應

當我們點擊“開始”按鈕,進度欄便開始增加,當我們點擊“停止按鈕”,進度欄便停止增加,當我們點擊“重置”按鈕,進度欄便歸零。

控制進度欄增長速度

在啟動進度欄的start_progressbar()方法中,我們通過while循環(huán)來增加進度欄,每次增加0.0001,在這樣的情況下,進度欄增長得很快。其實,我們可以通過time模塊的sleep()方法凍結(jié)進度欄,以達到降低進度欄增長速度的效果。

修改start_progressbar()方法如下:

Python中如何使用多線程保持GUI的響應

我們讓進度欄的數(shù)值增長停歇0.3秒,看看效果:

Python中如何使用多線程保持GUI的響應

進度欄的增長速度確實比之前緩慢了很多。

使用QThread線程

PyQt中QtCore的QThread對象提供了一個獨立于平臺的方式來管理線程。

QThread對象通過調(diào)用run()方法來執(zhí)行線程,默認情況下,run()方法通過調(diào)用exec()方法來啟動事件的循環(huán)。

下面,我們通過一個進度欄計數(shù)器的示例,來演示一下QThread的使用。

我們新建一個繼承自QtCore.QThread的類RunThread(),并在其中定義一個run()方法用來啟動線程,定義一個stop()方法用來停止線程。

Python中如何使用多線程保持GUI的響應

首先,我們通過實例化QtCore.pyqtSignal(int)定義了一個新的信號counter_value,這個值會用來更新進度欄。然后設(shè)置了RunThread()類中的一些默認屬性。

在run()方法中,我們通過一個while循環(huán)來不斷累加計數(shù)器的值,并且將累加的計數(shù)器的值通過定義的信號counter_value發(fā)送出去。

在stop()方法中,我們設(shè)置線程的運行狀態(tài)為Fasle,然后使用QThread的terminate()方法確保線程完全的被停止。

然后,要應用這個進度欄計數(shù)器,我們還需要在主窗口類MainWindow()中添加和修改一番:

添加一個進度欄計數(shù)器方法progressbar_counter(),用來啟動線程管理器:

Python中如何使用多線程保持GUI的響應

添加一個進度欄設(shè)置方法set_progressbar(),用來設(shè)置進度欄的值:

Python中如何使用多線程保持GUI的響應

修改一下進度欄的啟動方法start_progressbar()。刪除while循環(huán),添加進度欄計數(shù)器到其中(因為進度欄計數(shù)器中已經(jīng)實現(xiàn)了while循環(huán)增加數(shù)值):

Python中如何使用多線程保持GUI的響應

修改進度欄的停止方法stop_progressbar(),添加線程的stop()方法用來停止線程:

Python中如何使用多線程保持GUI的響應

修改完成后,我們運行程序,看看效果:

Python中如何使用多線程保持GUI的響應

通過終端打印出來的信息,我們可以直觀的看到QThread線程的管理控制。

看完上述內(nèi)容,你們對Python中如何使用多線程保持GUI的響應有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

網(wǎng)頁標題:Python中如何使用多線程保持GUI的響應
網(wǎng)站地址:http://jinyejixie.com/article48/ggciep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、關(guān)鍵詞優(yōu)化電子商務(wù)、App設(shè)計、面包屑導航、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
商南县| 日照市| 奉贤区| 左权县| 华容县| 内江市| 双牌县| 扶沟县| 华亭县| 新宁县| 冷水江市| 襄樊市| 嵊州市| 鄂托克旗| 临朐县| 襄樊市| 新干县| 阜康市| 亳州市| 延边| 永安市| 海晏县| 吴川市| 伊宁市| 盘山县| 栾川县| 宜川县| 广宗县| 南京市| 浦江县| 嵊泗县| 洪湖市| 太和县| 临清市| 池州市| 阜宁县| 兴隆县| 彩票| 绥中县| 页游| 富源县|