
公众号: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(50, 50)
rb2 = QRadioButton("女", self)
rb2.move(50, 100)
gender_group = QButtonGroup(self)
gender_group.addButton(rb1)
gender_group.addButton(rb2)
rb3 = QRadioButton("是", self)
rb3.move(50, 150)
rb4 = QRadioButton("否", self)
rb4.setChecked(True)
rb4.move(50, 200)
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