添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

阅读这篇的前提是已经默认了解了 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_())

各个语句的解释:
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_())

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

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

# PyQt5点击按钮弹出自定义窗口 创建新窗口 1. 创建 QPushButton 按钮并绑定点击事件函数; 2. 点击按钮创建自己定义的窗口类对象并显示; 3. 包含两个例程,分别为只能弹出一个窗口和可以反复点击按钮创建无限个窗口的代码。 # PyQt5按钮点击事件按钮绑定事件调用自定义函数 QPushButton 1. 继承 QWidget 定义自定义窗口类; 1. 在窗口中创建三个 QPushButton 并设置水平布局 QHBoxLayout; 2. 将三个按钮分别绑定自定义函数。   事件对象:封装了事件源中的状态变化 Evnet_Obj   PyQt5有一个独一无二的信号和槽机制来处理事件。信号和槽用于对象之间的通信。当指定事件发生,一个事件信号会被发射。槽可以被任... 2.6 小结 不用多说,信号(signal)与槽(slot)机制很重要。在这里我把信号视作裁判鸣枪,而用于行动的槽函数则视作选手开跑,当裁判鸣枪后(即信号发出),选手就开始往前跑... 通过PyQt5实现快捷键触发按钮函数逻辑的实现方式有两种,一种是在设计界面过程中顺带设置按钮的属性,如果需要修改快捷键则需要在界面文件中修改或者去ui文件转成的py文件当中修改,感觉不是很方便,另一种是在使用按钮时进行设置,为属性绑定键盘快捷键,进而触发按钮逻辑。 调用了在同目录下的catch文件,在PyQt5的点击触发该文件下的catchmassage函数,结果发现,即使没有点击该按钮,任然会自动执行。所以调用catch的时候会直接把catch的程序执行出来,然后直接输出文件,有点蠢,记录一下。查看了pyqt的文档,发现写法并没有问题,最后发现是catch.py没有写上。 我在网上找了好久也有好多的界面跳转的例子看上去都很高级,但是我都看不懂,虽然按照他们的代码抄可以实现但是我不会怎么在他的基础上添加窗口。可能是因为我的技术太垃圾了。所以我已经了好久终于通过一遍一遍的测试终于实现的效果。