最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt5通信機(jī)制 信號與槽詳解

 更新時(shí)間:2019年08月07日 09:38:58   作者:BengDou_Do&Think  
這篇文章主要介紹了PyQt5通信機(jī)制 信號與槽詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

 前言

信號和槽是PyQt編程對象之間進(jìn)行通信的機(jī)制。每個(gè)繼承自QWideget的控件都支持信號與槽機(jī)制。信號發(fā)射時(shí)(發(fā)送請求),連接的槽函數(shù)就會自動(dòng)執(zhí)行(針對請求進(jìn)行處理)。本文主要講述信號和槽最基本、最經(jīng)常使用方法。就是內(nèi)置信號和槽的使用的使用方法。

內(nèi)置信號和槽

所謂內(nèi)置信號與槽的使用。是指在發(fā)射信號時(shí),使用窗口控件的函數(shù),而不是自定義的函數(shù)。信號與槽的連接方法是通過QObject.signal.connect將一個(gè)QObject的信號連接到另一個(gè)QObject的槽函數(shù)。

在任何GUI設(shè)計(jì)中,按鈕都是最重要的和常用的觸發(fā)動(dòng)作請求的方式,用來與用戶進(jìn)行交互操作。常見的按鈕包括QPushButton、QRadioButton和QCheckBox。這些按鈕都繼承自QAbstractButton類,QAbstractButton提供的信號包括:

Clicked:鼠標(biāo)左鍵點(diǎn)擊按鈕并釋放觸發(fā)該信號。最常用。記住這個(gè)就差不多夠了。

Pressed:鼠標(biāo)左鍵按下時(shí)觸發(fā)該信號

Released:鼠標(biāo)左鍵釋放時(shí)觸發(fā)該信號

Toggled:控件標(biāo)記狀態(tài)發(fā)生改變時(shí)觸發(fā)該信號。

內(nèi)置信號和槽使用實(shí)例

這里實(shí)現(xiàn)一個(gè)點(diǎn)擊按鈕退出界面需求實(shí)現(xiàn)過程來介紹內(nèi)置信號和槽。開始動(dòng)手。。。

Step1:打開Qt Designer,選擇Widget模板。在工具箱中拖動(dòng)Push Button控件按鈕到主界面。并修改控件顯示名稱。保存為singal.ui。界面如下:

Step2:使用pyuic5 -o singal.py singal.ui轉(zhuǎn)換成.py格式。

Step3:為考慮介紹方便,將調(diào)用程序在singal.py中主程序。其中MyMainForm類中的命令行為Push Button按鈕點(diǎn)擊信號添加槽函數(shù)。如下

self.pushButton.clicked.connect(self.close)

完整代碼如下(可直接拷貝運(yùn)行,字體加粗部分為添加部分):

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'signal.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(431, 166)
    self.pushButton = QtWidgets.QPushButton(Form)
    self.pushButton.setGeometry(QtCore.QRect(160, 50, 91, 41))
    font = QtGui.QFont()
    font.setFamily("YaHei Consolas Hybrid")
    font.setPointSize(14)
    self.pushButton.setFont(font)
    self.pushButton.setObjectName("pushButton")
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
  def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "信號與槽"))
    self.pushButton.setText(_translate("Form", "關(guān)閉"))

class MyMainForm(QMainWindow, Ui_Form):
  def __init__(self, parent=None):
    super(MyMainForm, self).__init__(parent)
    self.setupUi(self)
    self.pushButton.clicked.connect(self.close)
if __name__ == "__main__":
  app = QApplication(sys.argv)
  myWin = MyMainForm()
  myWin.show()
  sys.exit(app.exec_())

運(yùn)行并點(diǎn)擊如下按鈕就可以關(guān)閉窗口

內(nèi)置信號和自定義槽使用實(shí)例

實(shí)現(xiàn)過程同上述步驟一樣。槽函數(shù)showMsg為自定義函數(shù)。

信號與槽:self.pushButton.clicked.connect(self.showMsg)

完整代碼如下(可直接拷貝運(yùn)行,字體加粗部分為添加部分):

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'signal.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(431, 166)
    self.pushButton = QtWidgets.QPushButton(Form)
    self.pushButton.setGeometry(QtCore.QRect(160, 50, 91, 41))
    font = QtGui.QFont()
    font.setFamily("YaHei Consolas Hybrid")
    font.setPointSize(14)
    self.pushButton.setFont(font)
    self.pushButton.setObjectName("pushButton")
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
  def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "信號與槽"))
    self.pushButton.setText(_translate("Form", "運(yùn)行"))
class MyMainForm(QMainWindow, Ui_Form):
  def __init__(self, parent=None):
    super(MyMainForm, self).__init__(parent)
    self.setupUi(self)
    self.pushButton.clicked.connect(self.showMsg)
  def showMsg(self):
    QMessageBox.information(self, "信息提示框", "OK,內(nèi)置信號與自定義槽函數(shù)!")

if __name__ == "__main__":
  app = QApplication(sys.argv)
  myWin = MyMainForm()
  myWin.show()
  sys.exit(app.exec_())

運(yùn)行結(jié)果如下:

Qt Designer添加控件信號與槽

上述介紹的內(nèi)容是通過代碼方式實(shí)現(xiàn)內(nèi)置信號與槽的連接。那Qt Designer工具可以實(shí)現(xiàn)信號與槽的連接?之前在第二節(jié)課Qt Designer主界面介紹時(shí)提過信號槽區(qū)域。一直沒有講如何使用。通過這個(gè)區(qū)域功能是可以實(shí)現(xiàn)信號與槽的連接的。

還是以添加內(nèi)置信號與槽來介紹。

Step1:打開Qt Designer界面,找到信號槽編輯區(qū)。如下

Step2:點(diǎn)擊+號 Sender控件選擇"PushButton"、Signal信號選擇"clicked",Receiver選擇"Form",內(nèi)置槽函數(shù)選擇"close()"

Step3:保存.ui格式,并使用pyuic轉(zhuǎn)換成.py格式,添加調(diào)用程序,運(yùn)行。效果一樣。這些步驟都介紹過,不再重復(fù)介紹,關(guān)鍵代碼如下:

小結(jié)

本文介紹了PyQt5信號與槽最基本的使用方法。知道如何在Qt Designer生成的.py文件中添加控件信號與槽的關(guān)系并且知道如何調(diào)用自定義槽函數(shù)。掌握了這些,應(yīng)該就可以動(dòng)手實(shí)現(xiàn)一些基本的需求了。

到這里,按照這幾個(gè)章節(jié)的介紹應(yīng)該可以動(dòng)手完成簡單需求的實(shí)現(xiàn)。至于更進(jìn)一步的學(xué)習(xí),可以通過實(shí)踐過程中遇到的問題以及小工具開發(fā)需求去驅(qū)動(dòng)加深理解可能效果會好一點(diǎn)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)視頻轉(zhuǎn)換為音頻的方法詳解

    Python實(shí)現(xiàn)視頻轉(zhuǎn)換為音頻的方法詳解

    這篇文章主要為大家詳細(xì)Python如何將視頻轉(zhuǎn)換為音頻并將音頻文件保存到特定文件夾下,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Python基礎(chǔ)學(xué)習(xí)之認(rèn)識線程

    Python基礎(chǔ)學(xué)習(xí)之認(rèn)識線程

    這篇文章主要介紹了Python線程,這篇開始我們將進(jìn)入中級編程。處理更加復(fù)雜事情。比如本文的線程,咱們先從基礎(chǔ)知識入手,需要的朋友可以參考下下面文章的詳細(xì)內(nèi)容
    2022-02-02
  • 利用rest framework搭建Django API過程解析

    利用rest framework搭建Django API過程解析

    這篇文章主要介紹了利用rest framework搭建Django API過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python小程序?qū)崿F(xiàn)刷票功能詳解

    python小程序?qū)崿F(xiàn)刷票功能詳解

    這篇文章主要介紹了python小程序?qū)崿F(xiàn)刷票功能詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python3的map與reduce實(shí)例詳解

    python3的map與reduce實(shí)例詳解

    這篇文章主要介紹了Python3中map()、reduce()、filter()的用法詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • python實(shí)現(xiàn)udp聊天窗口

    python實(shí)現(xiàn)udp聊天窗口

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)udp聊天窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python爬取附近餐館信息代碼示例

    Python爬取附近餐館信息代碼示例

    這篇文章主要介紹了Python爬取附近餐館信息代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換

    Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換

    這篇文章主要介紹了Pytorch 實(shí)現(xiàn)變量類型轉(zhuǎn)換操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python發(fā)送手機(jī)動(dòng)態(tài)驗(yàn)證碼代碼實(shí)例

    Python發(fā)送手機(jī)動(dòng)態(tài)驗(yàn)證碼代碼實(shí)例

    這篇文章主要介紹了Python發(fā)送手機(jī)動(dòng)態(tài)驗(yàn)證碼代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • MAC平臺基于Python Appium環(huán)境搭建過程圖解

    MAC平臺基于Python Appium環(huán)境搭建過程圖解

    這篇文章主要介紹了MAC平臺基于Python Appium環(huán)境搭建過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評論

南开区| 柘荣县| 兰溪市| 鹰潭市| 喀什市| 武山县| 格尔木市| 鹤峰县| 新源县| 雷州市| 唐海县| 黄梅县| 星座| 武城县| 体育| 黄骅市| 四子王旗| 黄平县| 共和县| 长汀县| 九龙县| 略阳县| 吴堡县| 礼泉县| 南华县| 阿克陶县| 磴口县| 本溪市| 常山县| 赞皇县| 日土县| 和静县| 三亚市| 奉新县| 克东县| 融水| 西充县| 赣榆县| 芮城县| 德江县| 沭阳县|