【python】PyQt5 学习 _6

本帖讲解 Button。

PyQt5 中常见的按钮类:QPushButton、QToolButton、QRadioButton、QCheckBox,他们都继承自 QAbstractButton 类。

QAbstractButton 提供的状态如下表

状态 含义
isDown() 提示按钮是否已按下
isChecked() 提示按钮是否已经标记
isEnable() 提示按钮是否可以被用户点击
isDown() 提示按钮是否已按下
isCheckAble() 提示按钮是否为可标记的
setAutoRepeat() 设置按钮是否在用户长按时可以自动重复执行

QAbstractButton 提供的信号如下表

信号 含义
Pressed 当鼠标指针在按钮上并按下左键时触发该信号
Released 当鼠标左键被释放时触发该信号
Clicked 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号
Toggled 当按钮的标记状态发生改变时触发该信号

QPUshButton 类中的常用方法

状态 含义
isDown() 提示按钮是否已按下
setCheckable() 设置按钮是否已经被选中,如果设置 True,则表示按钮将保持已点击和释放状态
toggle() 在按钮状态之间进行切换
setIcon() 设置按钮上的图标
setEnabled() 设置按钮是否可以使用,当设置为 False 时,按钮变成不可用状态,点击它不会发射信号
isChecked() 返回按钮的状态,返回值为 True 或者 False
setDefault() 设置按钮的默认状态
setText() 设置按钮的显示文本
text() 返回按钮的显示文本
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class QtButton(QDialog):
    def __init__(self,parent=None):
        super(QtButton, self).__init__(parent)
        
        layout=QVBoxLayout()#垂直布局   前文已经介绍过。

        #创建按钮1
        self.btn1=QPushButton('Button1')
        #setCheckable():设置按钮是否已经被选中,如果为True,则表示按钮将保持已点击和释放状态
        self.btn1.setCheckable(True)
        #toggle():在按钮状态之间进行切换
        self.btn1.toggle()
        #点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
        self.btn1.clicked.connect(lambda :self.whichbtn(self.btn1))
        #点击信号与槽函数进行连接,实现的目的:输入按键的当前状态,按下还是释放
        self.btn1.clicked.connect(self.btnstate)

        #添加控件到布局中
        layout.addWidget(self.btn1)

        #创建按钮2
        self.btn2=QPushButton('image')
        #为按钮2添加图标
        self.btn2.setIcon(QIcon(QPixmap('image_path')))  # 本地的一张图片
        ##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
        self.btn2.clicked.connect(lambda :self.whichbtn(self.btn2))

        layout.addWidget(self.btn2)

        self.btn3=QPushButton('Disabled')
        #setEnabled()设置按钮是否可以使用,当设置为False的时候,按钮变成不可用状态,点击它不会发射信号
        self.btn3.setEnabled(False)

        layout.addWidget(self.btn3)

        #创建按钮并添加快捷键   Alt+D
        self.btn4=QPushButton('&Download')
        #setDefault():设置按钮的默认状态
        self.btn4.setDefault(True)
        ##点击信号与槽函数进行连接,这一步实现:在控制台输出被点击的按钮
        self.btn4.clicked.connect(lambda :self.whichbtn(self.btn4))

        layout.addWidget(self.btn4)

        self.setWindowTitle("Button demo")
        self.setLayout(layout)

    def btnstate(self):
        #isChecked():判断按钮的状态,返回值为True或False
        if self.btn1.isChecked():
            print('button pressed')
        else:
            print('button released')

    def whichbtn(self,btn):
        #输出被点击的按钮
        print('clicked button is '+btn.text())
if __name__ == '__main__':
    app=QApplication(sys.argv)
    btnDemo=QtButton()
    btnDemo.show()
    sys.exit(app.exec_())
  • 本段代码 有 4 个 QPushButton,用到了 :设置按键状态(是否被点击或者释放的状态、禁用按键),添加图标,快捷键。

  • 用到了框布局 Boxlayout。大家也可以尝试其他布局方式。

  • 按键 绑定了相关函数,《【python】PyQt5 学习 _2 》中也有类似代码,只是本次相关联函数是自己写的,而之前的是直接调用 pyqt 封装好的。
  • 晚安 ~~~

哈哈哈 Markdown 用得熟练多了 ~