PyQt5学习笔记9 - QPushButton & QRadioButton

前文

PyQt5学习笔记4 - QMainWindow
PyQt5学习笔记5 - QWidget
PyQt5学习笔记6 - QLabel
PyQt5学习笔记7 - QLineEdit
PyQt5学习笔记8 - QTextEdit

本文概述

QTextEdit, setHtml, setPlainText()

QAbstractButton

在任何GUI设计中,按钮都是最重要的和常用的触发动作请求方式,用来与用于进行交互操作。在PyQt中根据不同的使用场景将按钮划分为不同的表现形式。按钮的基类是QAbstractButton,提供了按钮的通用功能。QAbstractButton类为抽象类,不能实例化,必须由其他的按钮类继承QAbstractButton类,来实现不同的功能,不同的表现形式。

常见的按钮类包括:QPushButton, QToolButton, QRadioButtonQCheckButton。这些按钮类均继承于QAbstractButton类。

QAbstractButton提供的状态有:

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





QAbstractButton提供的信号有:

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




QPushButton

QPushButton类继承自QAbstractButton类,其形状是厂房是,文本标题或图标可以显示在长方形上。他也是一种命令按钮,可以单击该按钮执行一些命令,或者响应一些事件。



QPushButton常用的方法

方法 描述
setCheckable() 设置按钮是否已经被选中,如果设置为True,则表示按钮将保持已点击和释放状态
toggle() 在按钮状态之间进行切换
setIcon() 设置变扭上的图标
setEnable() 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号
isChecked() 返回按钮的状态,返回值为True或False
setDefault 设置按钮的默认状态
setText() 设置按钮的显示文本
text() 返回按钮的显示文本

实例1: QPushButton按钮的使用

import sys
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QDialog, QVBoxLayout, QPushButton, QApplication


class ButtonDemo(QDialog):
    def __init__(self, parent=None):
        super(ButtonDemo, self).__init__(parent)
        layout = QVBoxLayout()

        self.button1 = QPushButton('Button1')
        self.button1.setCheckable(True)  # 检测是否被标记(状态)
        self.button1.toggle()  # 切换状态
        self.button1.clicked.connect(lambda: self.click_button_event(self.button1))
        self.button1.clicked.connect(self.button_status)

        self.button2 = QPushButton('image')
        self.button2.setIcon(QIcon(QPixmap("../image/python.jpg")))
        self.button2.clicked.connect(lambda: self.click_button_event(self.button2))

        self.button3 = QPushButton('Disable')
        self.button3.setEnabled(False)

        self.button4 = QPushButton("&Close")
        self.button4.setDefault(True)
        self.button4.clicked.connect(lambda: self.click_button_event(self.button4))

        self.setWindowTitle('ButtonDemo')
        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        layout.addWidget(self.button3)
        layout.addWidget(self.button4)
        self.setLayout(layout)

    @staticmethod
    def click_button_event(bth):
        print(f'clicked button is {bth.text()}')

    def button_status(self):
        if self.button1.isChecked():
            print('button1 pressed')
        else:
            print('button1 released')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = ButtonDemo()
    demo.show()
    sys.exit(app.exec())

QRadioButton

QRadioButton继承于QAbstractButton类,它提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项, 标签用于显示对应的文本信息。单选按钮是一种开关按钮,可以切换ON/OFF, 主要是为用户提供"多选一"的选择。

QRadioButton是单选按钮控件默认是独占的(Exclusive).对于继承自同一个父类Widget的多个单选按钮,他们属于同一个按钮组合,在单选按钮组里面,一次只能选择一个单选按钮。如果需要选择多个按钮,则需要将他们放在QGroupBox或QButtonGroup中。

当单选按钮切换ON/OFF时,就会发射toggled信号,绑定这个信号,在按钮状态发生改变的时候,触发相应的行为。

在QRadioButton中,toggle信号是切换按钮状态时发射的,而clicked信号则在每次单击单选按钮时都会发射。在实际中,一般只有状态改变时才有必要去响应,因此toggle信号更适合用于状态监控。




QRadioButton常用方法:

方法 描述
setCheckable() 设置按钮是否被选中,可以改变单选按钮的状态,如果设置为True,则表示单元按钮将保持已点击和释放状态
isChecked() 返回单选按钮的状态,返回值是True或Flase
setText() 设置单元按钮的显示文本
text() 返回单选按钮的显示文本




实例1: QRadioButton的使用

import sys
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QRadioButton, QApplication


class RadioButtonDemo(QWidget):
    def __init__(self, parent=None):
        super(RadioButtonDemo, self).__init__(parent)
        layout = QHBoxLayout()
        self.button1 = QRadioButton('Button1')
        self.button1.setCheckable(True)
        self.button1.toggled.connect(lambda: self.button_state(self.button1))

        self.button2 = QRadioButton("Button2")
        self.button2.toggled.connect(lambda: self.button_state(self.button2))

        layout.addWidget(self.button1)
        layout.addWidget(self.button2)
        self.setLayout(layout)
        self.setWindowTitle('RadioButtonDemo')

    @staticmethod
    def button_state(button: QRadioButton):
        if button.isChecked():
            print(button.text() + ' is selected')
        else:
            print(button.text() + ' is deselected')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = RadioButtonDemo()
    demo.show()
    sys.exit(app.exec())




如有侵权,请联系删除

你可能感兴趣的:(PyQt5学习笔记9 - QPushButton & QRadioButton)