当前位置:   article > 正文

PyQt5创建按钮和触发点击事件_pyqt5 按键触发函数

pyqt5 按键触发函数

阅读这篇的前提是已经默认了解了PyQt5的基础框架(超链接点击跳转)。我们进一步介绍如何创建按钮和触发点击事件。代码如下:

# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('创建按钮和按钮点击事件的例子')

        self.button1 = QPushButton('按键1', self)
        self.button1.clicked.connect(self.clickButton)

    def clickButton(self):
        sender = self.sender()
        print(sender.text() + '被点击')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

各个语句的解释:
self.button1 = QPushButton('按键1', self):创建一个按钮对象,按钮对象上的文字显示为按键1,第二个参数self表示我们将这个创建好的按钮对象放置在我们已经创建好的QMainWindow对象上。注意这里后面括号中的 self 不能够省略,否则按钮无法正常被显示。
self.button1.clicked.connect(self.clickButton):当我们点击创建的按钮按键1时,执行我们自定义的clickButton函数。注意这里的self.clickButton不能够带括号,否则会报错self.button1.clicked.connect() 的参数是按键点击后关联的一个对象名称,我们知道self.clickButton代表函数对象名称,而self.clickButton()表示的是一个函数对象。关于这个的详细说明可以参考python 函数存放在列表中并调用(超链接点击跳转)。
sender = self.sender():这里的self.sender()指的是发送信号的对象,这样子我们就可以获取到发送信号的对象按键1
sender.text():获取发送信号对象的名字,这样我们就可以得到按键1的名字。

最终运行后的效果如下:
输出结果
拓展:上面我们说到self.button1.clicked.connect(self.clickButton)中的按键点击事件关联对象self.clickButton不能够带括号。但是这里如果我们一定要使用带括号的形式是不是不行呢?答案是否定的,我们可以采用lambda函数来解决这一问题。代码如下:

# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('创建按钮和按钮点击事件的例子')

        self.button1 = QPushButton('按键1', self)
        self.button1.clicked.connect(lambda: self.clickButton())

    def clickButton(self):
        sender = self.sender()
        print(sender.text() + '被点击')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行后我们也可以实现最终的效果,但是这里不推荐使用,在使用了lambda函数后可以明显感觉到程序响应的速度被拖慢了。可以自行尝试。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/859553
推荐阅读
相关标签
  

闽ICP备14008679号