亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PyQt 線(xiàn)程類(lèi) QThread使用詳解

 更新時(shí)間:2017年07月16日 16:46:36   作者:RustFisher  
QThread是我們將要詳細(xì)介紹的第一個(gè)類(lèi)。它也是 Qt 線(xiàn)程類(lèi)中最核心的底層類(lèi)。由于 PyQt 的跨平臺(tái)特性,QThread要隱藏掉所有平臺(tái)相關(guān)的代碼。

PyQt中的線(xiàn)程類(lèi) QtCore.QThread ,使用時(shí)繼承QThread類(lèi)

啟動(dòng)界面的線(xiàn)程暫稱(chēng)為UI線(xiàn)程。界面執(zhí)行命令時(shí)都在自己的UI線(xiàn)程中。

如果在UI線(xiàn)程中執(zhí)行網(wǎng)絡(luò)連接和數(shù)據(jù)庫(kù)操作等耗時(shí)的操作,界面會(huì)被卡住,Windows下有可能會(huì)出現(xiàn)“無(wú)響應(yīng)”的警告。

阻塞UI線(xiàn)程會(huì)降低用戶(hù)體驗(yàn)和應(yīng)用穩(wěn)定性。因此我們可以把耗時(shí)操作放在線(xiàn)程中去執(zhí)行。

QThread代表一個(gè)線(xiàn)程,我們可以復(fù)寫(xiě)run函數(shù)來(lái)執(zhí)行我們要的操作。

QThread可以使用 QtCore.pyqtSignal 來(lái)與界面交互和傳輸數(shù)據(jù)。

PyQt4 QThread 代碼示例

•Python2.7
# -*- coding: utf-8 -*-
import sys

from PyQt4 import QtCore
from PyQt4.QtCore import QCoreApplication
from PyQt4.QtGui import QWidget, QPushButton, QApplication, QTextBrowser


class TimeThread(QtCore.QThread):
  signal_time = QtCore.pyqtSignal(str, int) # 信號(hào)

  def __init__(self, parent=None):
    super(TimeThread, self).__init__(parent)
    self.working = True
    self.num = 0

  def start_timer(self):
    self.num = 0
    self.start()

  def run(self):
    while self.working:
      print "Working", self.thread()
      self.signal_time.emit("Running time:", self.num) # 發(fā)送信號(hào)
      self.num += 1
      self.sleep(1)


class TimeDialog(QWidget):
  def __init__(self):
    super(TimeDialog, self).__init__()
    self.timer_tv = QTextBrowser(self)
    self.init_ui()
    self.timer_t = TimeThread()
    self.timer_t.signal_time.connect(self.update_timer_tv)

  def init_ui(self):
    self.resize(300, 200)
    self.setWindowTitle('TimeDialog')
    self.timer_tv.setText("Wait")
    self.timer_tv.setGeometry(QtCore.QRect(10, 145, 198, 26))
    self.timer_tv.move(0, 15)

    btn1 = QPushButton('Quit', self)
    btn1.setToolTip('Click to quit')
    btn1.resize(btn1.sizeHint())
    btn1.move(200, 150)
    btn1.clicked.connect(QCoreApplication.instance().quit)

    start_btn = QPushButton('Start', self)
    start_btn.setToolTip("Click to start")
    start_btn.move(50, 150)
    self.connect(start_btn, QtCore.SIGNAL("clicked()"), self.click_start_btn)

  def click_start_btn(self):
    self.timer_t.start_timer()

  def update_timer_tv(self, text, number):
    self.timer_tv.setText(self.tr(text + " " + str(number)))


if __name__ == '__main__':
  app = QApplication(sys.argv)
  time_dialog = TimeDialog()
  time_dialog.show()

  sys.exit(app.exec_())


QThread中使用的信號(hào) signal_time = QtCore.pyqtSignal(str, int) 指定了參數(shù)str和int

發(fā)送信號(hào) self.signal_time.emit("Running time:", self.num)

外部接收信號(hào) self.timer_t.signal_time.connect(self.update_timer_tv)
信號(hào)連接到方法 update_timer_tv(self, text, number) ,注意信號(hào)與方法的參數(shù)要一一對(duì)應(yīng)

使用中我們可以定義多種不同的信號(hào) QtCore.pyqtSignal

啟動(dòng)線(xiàn)程,調(diào)用 start()

相關(guān)文章

  • Python Flask的request對(duì)象使用詳解

    Python Flask的request對(duì)象使用詳解

    本文介紹Flask request對(duì)象,一個(gè)完整的HTTP請(qǐng)求,包括客戶(hù)端向服務(wù)端發(fā)送的Request請(qǐng)求和服務(wù)器端發(fā)送Response響應(yīng).為了能方便訪(fǎng)問(wèn)獲取請(qǐng)求及響應(yīng)報(bào)文信息,Flask框架提供了一些內(nèi)建對(duì)象,下面就來(lái)說(shuō)一下Flask針對(duì)請(qǐng)求提供內(nèi)建對(duì)象reques,需要的朋友可以參考一下
    2023-02-02
  • OpenCV圖像修復(fù)cv2.inpaint()的使用

    OpenCV圖像修復(fù)cv2.inpaint()的使用

    這篇博客將介紹如何通過(guò)OpenCV中圖像修復(fù)的技術(shù)——cv2.inpaint() 去除舊照片中的小噪音、筆劃等。并提供一個(gè)可交互式的程序,感興趣的可以了解一下
    2021-08-08
  • python pywinauto使用過(guò)程及問(wèn)題小結(jié)

    python pywinauto使用過(guò)程及問(wèn)題小結(jié)

    在pywinauto庫(kù)中,uia即UIAutomation,是微軟提供的用于用戶(hù)界面自動(dòng)化測(cè)試和輔助功能訪(fǎng)問(wèn)的技術(shù)框架,UIAutomation支持自動(dòng)化腳本與各種UI元素交互,本文給大家介紹python pywinauto使用過(guò)程及問(wèn)題小結(jié),感興趣的朋友一起看看吧
    2024-10-10
  • 使用python實(shí)現(xiàn)excel的Vlookup功能

    使用python實(shí)現(xiàn)excel的Vlookup功能

    這篇文章主要介紹了使用python實(shí)現(xiàn)excel的Vlookup功能,當(dāng)我們想要查找的數(shù)據(jù)量較大時(shí),這時(shí)則有請(qǐng)我們的主角VLookup函數(shù)出場(chǎng),那么如何用python實(shí)現(xiàn)VLookup呢,需要的朋友可以參考下
    2023-04-04
  • Python+wxPython實(shí)現(xiàn)文件內(nèi)容搜索工具

    Python+wxPython實(shí)現(xiàn)文件內(nèi)容搜索工具

    在本篇文章中,我們將介紹如何使用?wxPython?庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的文件搜索工具,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-08-08
  • 基于Python實(shí)現(xiàn)音樂(lè)節(jié)奏可視化效果

    基于Python實(shí)現(xiàn)音樂(lè)節(jié)奏可視化效果

    這篇文章主要為大家詳細(xì)介紹了如何基于Python語(yǔ)言實(shí)現(xiàn)音樂(lè)節(jié)奏可視化效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • python使用numpy中的size()函數(shù)實(shí)例用法詳解

    python使用numpy中的size()函數(shù)實(shí)例用法詳解

    在本篇文章里小編給整理的是一篇關(guān)于python使用numpy中的size()函數(shù)實(shí)例用法詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • 理解python中裝飾器的作用

    理解python中裝飾器的作用

    python裝飾器就是用于拓展原來(lái)函數(shù)功能的一種函數(shù),這個(gè)函數(shù)的特殊之處在于它的返回值也是一個(gè)函數(shù),使用python裝飾器的好處就是在不用更改原函數(shù)的代碼前提下給函數(shù)增加新的功能
    2021-07-07
  • 關(guān)于Keras Dense層整理

    關(guān)于Keras Dense層整理

    這篇文章主要介紹了關(guān)于Keras Dense層整理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • opencv python簡(jiǎn)易文檔之圖像處理算法

    opencv python簡(jiǎn)易文檔之圖像處理算法

    OpenCV是一個(gè)開(kāi)源庫(kù),包含了許多計(jì)算機(jī)視覺(jué)算法,它在計(jì)算機(jī)視覺(jué)和圖像處理中起著重要作用,用于實(shí)時(shí)操作,其效率足以滿(mǎn)足工業(yè)上的要求,這篇文章主要給大家介紹了關(guān)于opencv python簡(jiǎn)易文檔之圖像處理算法的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評(píng)論