HOME/Articles/

pyqt example SignalsExample (snippet)

Article Outline

Python pyqt (gui) example 'SignalsExample'

SignalsExample

Python pyqt example: SignalsExample

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Created on 2019年7月2日
@author: Irony
@site: https://pyqt5.com https://github.com/PyQt5
@email: [email protected]
@file: QPushButton.SignalsExample
@description: 按钮信号例子
"""
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QPlainTextEdit


__Author__ = "Irony"
__Copyright__ = "Copyright (c) 2019"
__Version__ = "Version 1.0"


class Window(QWidget):

    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        layout = QVBoxLayout(self)

        btn1 = QPushButton('按钮点击信号', self)
        btn1.setObjectName('ClickBtn')
        btn1.clicked.connect(self.onClicked)

        layout.addWidget(btn1)
        layout.addWidget(QPushButton(
            '按钮按下信号', self, objectName='PressBtn', pressed=self.onPressed))
        layout.addWidget(QPushButton(
            '按钮释放信号', self, objectName='ReleaseBtn', released=self.onReleased))
        layout.addWidget(QPushButton(
            '按钮选中信号', self, checkable=True, objectName='ToggleBtn', toggled=self.onToggled))

        self.resultView = QPlainTextEdit(self)
        self.resultView.setReadOnly(True)
        layout.addWidget(self.resultView)

    def onClicked(self):
        self.resultView.appendPlainText(
            '按钮{0}被点击'.format(self.sender().objectName()))

    def onPressed(self):
        self.resultView.appendPlainText(
            '按钮{0}被按下'.format(self.sender().objectName()))

    def onReleased(self):
        self.resultView.appendPlainText(
            '按钮{0}被释放'.format(self.sender().objectName()))

    def onToggled(self, checked):
        self.resultView.appendPlainText(
            '按钮{0}被选中:{1}'.format(self.sender().objectName(), checked))


if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())