美文网首页Python测试开发
PyQt5学习笔记9 - QPushButton & QRadi

PyQt5学习笔记9 - QPushButton & QRadi

作者: 庄周幻梦 | 来源:发表于2021-05-01 16:30 被阅读0次

    前文

    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 & QRadi

        本文链接:https://www.haomeiwen.com/subject/qbnarltx.html