公众号:uncle39py

V1

2023/04/24阅读:26主题:默认主题

50.PyQt按钮,单选按钮,复选按钮

本节介绍QAbstractButton的子类

一. QPushButton普通按钮

构造方法如下:

QPushButton(text,parent)较常用

扁平化

btn.setFlat(True)展示样式上没有普通按钮那种突起的样子

菜单

菜单这个按钮的功能,对个人来说不太实用,我们不需要做太复杂按钮很多的软件,先不需费力去学,贴个api用到的时候在查

信号(都是从父类继承下来的)

二. QToolButton工具按钮

一般将此类按钮放在工具栏,按钮可添加菜单;鉴于对个人来说不太实用,先不去学.

三. QRadioButton 单选按钮

def init_ui(self):
    rb1 = QRadioButton("男",self)
    rb1.move(50,50)
    rb1.setChecked(True)
    rb2 = QRadioButton("女",self)
    rb2.move(50,100)

单选按钮最常用的信号是选中状态切换信号toggled

当有两个单选选项,比如男女,是否;此时它们4个按钮是互斥的,但明细不合逻辑

解决方案1:将其置于不同的父控件下,比如放在不同的QWidget下(不方便)

解决方案2:按钮组QButtonGroup

QButtonGroup继承自QObject,不可视;

提供一个抽象的按钮容器,不同组的单选按钮互不影响,同一组内的单选按钮互斥

def init_ui(self):
    rb1 = QRadioButton("男", self)
    rb1.move(5050)
    rb2 = QRadioButton("女", self)
    rb2.move(50100)
    gender_group = QButtonGroup(self)
    gender_group.addButton(rb1)
    gender_group.addButton(rb2)

    rb3 = QRadioButton("是", self)
    rb3.move(50150)
    rb4 = QRadioButton("否", self)
    rb4.setChecked(True)
    rb4.move(50200)
    answer_group = QButtonGroup(self)
    answer_group.addButton(rb3,3)#添加按钮的时候手动添加上id
    answer_group.addButton(rb4,4)
    
    print(answer_group.buttons())#获得按钮组里面的所有按钮
    print(answer_group.checkedButton())#获得按钮组里面当前选中的按钮
    print(answer_group.button(3))#获得按钮组里面指定id的按钮
    answer_group.removeButton(rb4)#将rb4从按钮组中移除(并没有删除按钮)

按钮组涉及的信号:

四.QCheckBox复选框

cb1 = QCheckBox("python",window)
cb2 = QCheckBox("java",window)

复选框默认情况下只有选中/未选中两种状态,

但是可以设置是否三态,即:被选中/未选中/部分选中三种状态,此处api有用到的时候再去查

针对三态的信号,两态用toggled即可

分类:

后端

标签:

后端

作者介绍

公众号:uncle39py
V1