1 PyQt5 (QCheckBox,QPushButton,QRadioButton,QToolButton)


QT5.9继承关系如下:
在这里插入图片描述

0 QAbstractButton

常用信号:
在这里插入图片描述

1 QCheckBox 复选按钮

Qt5.15 QCheckBox帮助文档

QCheckBox 继承自QAbstractButton

复选框三种状态:

未选中      Qt.Unchecked
部分选中    Qt.PartiallyChecked
真的被选中  Qt.Checked
#设置选择状态
void setCheckState(Qt::CheckState state)
#获得选择状态
Qt::CheckState	checkState() const

常用信号:

void stateChanged(int state)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtCore import  Qt
import sys

class DemoCheckBox(QWidget):
    def __init__(self):
        super(DemoCheckBox, self).__init__()
        self.setWindowTitle("QCheckBox示例")
        self.resize(400,400)
        self.mainlayout = QVBoxLayout(self)

        btn1 = QCheckBox("按钮1")
        btn2 = QCheckBox("按钮2")
        btn3 = QCheckBox("按钮3")

        # 复选框的选中状态有三种:选中、部分选中、全部选中;但在默认情况下只有选中和不选中两种状态,可以通过下列方法设置三态
        btn1.setTristate(True)
        '''
        未选中      Qt.Unchecked
        部分选中    Qt.PartiallyChecked
        真的被选中  Qt.Checked
        '''
        btn1.setCheckState(Qt.Checked)

        self.mainlayout.addWidget(btn1)
        self.mainlayout.addWidget(btn2)
        self.mainlayout.addWidget(btn3)
        self.mainlayout.addStretch()

        # 选中或清除选中时, 发射此信号 void  stateChanged(int state)
        btn2.stateChanged.connect(self.on_btn2_stateChanged)

    def on_btn2_stateChanged(self):
        sender = self.sender()
        print( "%s 状态变化 "%(sender.text()), sender.checkState())
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    test = DemoCheckBox()
    test.show()
    sys.exit(app.exec_())

效果如下:
在这里插入图片描述

在这里插入图片描述

2 QPushButton

在这里插入图片描述

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtCore import  Qt
import sys

class DemoQPushButton(QWidget):
    def __init__(self):
        super(DemoQPushButton, self).__init__()
        self.setWindowTitle("QPushButton示例")
        self.resize(400,400)
        self.mainlayout = QVBoxLayout(self)

        btn1 = QPushButton("按钮1",self)
        btn2 = QPushButton("按钮2")
        menu = QMenu()
        openaction = menu.addAction("打开")
        menu.addSeparator()
        menu.addAction("关闭")
        btn1.setMenu(menu)
        self.mainlayout.addWidget(btn1)
        self.mainlayout.addWidget(btn2)
        #信号槽
        btn2.clicked.connect(self.clicked_slot)
        openaction.triggered.connect(self.on_openaction_triggered)  #Action 信号

    def on_openaction_triggered(self):
        print(self.sender().text()) #信号发送者

    def clicked_slot(self):
        print(self.sender().text(), " 按下")
        self.sender().setEnabled(False)  #设置按钮不可点击

if __name__ == '__main__':
    app = QApplication(sys.argv)
    test = DemoQPushButton()
    test.show()
    sys.exit(app.exec_())

效果如下:
在这里插入图片描述

3 QRadioButton(常用处理互斥按钮组)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import *
from PyQt5.QtCore import  Qt
import sys

class DemoQRadioButton(QWidget):
    def __init__(self):
        super(DemoQRadioButton, self).__init__()
        self.setWindowTitle("QRadioButton例子")
        self.resize(400,300)
        self.mainlayout = QVBoxLayout(self)
        self.mainlayout.setContentsMargins(2,0,2,0)
        btn1 = QRadioButton('Button1')
        btn2 = QRadioButton('Button2')
        btn3 = QRadioButton('Button3')
        btn4 = QRadioButton('Button4')
        btn5 = QRadioButton('Button5')
        group01 = QButtonGroup(self) #按键组  处理互斥按钮
        group01.addButton(btn1,id=1) #设置id
        group01.addButton(btn2,id=2)
        group02 = QButtonGroup(self) #按键组  处理互斥按钮
        group02.addButton(btn3,id=3)
        group02.addButton(btn4,id=4)
        group02.addButton(btn5,id=5)
        childlayout = QHBoxLayout(self)
        childlayout.addWidget(btn1)
        childlayout.addWidget(btn2)
        self.mainlayout.addLayout(childlayout)
        line = QFrame()
        line.setFrameStyle(QFrame.HLine|QFrame.Plain)
        self.mainlayout.addWidget(line)
        self.mainlayout.addWidget(btn3)
        self.mainlayout.addWidget(btn4)
        self.mainlayout.addWidget(btn5)
        #信号槽
        group01.buttonClicked.connect(self.slot_group01)  #传递按键对象
        group02.buttonClicked[int].connect(self.slot_group02) #传递按键id
        # QAbstractButton 的几个信号
        btn2.clicked.connect(lambda : print("按键2 clicked "))
        btn2.pressed.connect(lambda: print("按键2 pressed "))
        btn2.released.connect(lambda: print("按键2 released "))
        btn2.toggled.connect(lambda: print("按键2 toggled "))

    def slot_group01(self,btn):
        print(btn.text(), " checked")

    def slot_group02(self,id):
        print("按键id ",id )

if __name__ == '__main__':
    app = QApplication(sys.argv)
    test = DemoQRadioButton()
    test.show()
    sys.exit(app.exec_())

QAbstractButton的常用信号 及 QButtonGroup信号信号如上面代码所示,效果如下

#打印日志:
按键2 pressed 
按键2 toggled 
按键2 released 
按键2 clicked 
Button2  checked
按键id  3

在这里插入图片描述

4 QToolButton(工具按钮 快速访问按钮)

一般在工具栏中显示,工具栏中的工具按钮一般只显示图标
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值