0


PyQt按钮控件(总篇)

前言:

    把按钮相关控件作为一个学习大面,所以内容篇幅较大,建议收藏,用目录锚定来看

按钮控件

按钮其实也是一种用户输入(点击),不过偏事件且相关类还是比较多,所以我们单独作为一个学习大类,要学习的有以下:
​
QAbstractButton(按钮基类)、普通按钮(QPushButton)、链接按钮(QCommandLinkButton)、单选按钮(QRadioButton)、复选框按钮(QCheckBox)、工具按钮(QToolButton)、QButtonGroup、QCheckBox

QAbstractButton

简要

继承关系【QWidget --> QAbstractButton】,【抽象按钮】控件,按钮的基类
是抽象类(使用时需子类化)
相关子类:普通按钮(QPushButton)、链接按钮(QCommandLinkButton)、单选按钮(QRadioButton)、复选框按钮(QCheckBox)、工具按钮(QToolButton)
学习建议:了解以下"信号与槽"机制

功能作用

1. 提示文本
2. 图标相关:
    setIcon(QIcon(str_img)):设置图标
    setIconSize(QSize(w,h)):设置图标尺寸
    
    icon():获取图标
    iconSize():获取图标大小
        
        
3. 设置快捷键:
    setText("*&key*"):通过该该方法中加入“&”符号,实现Alt + ke快捷点击
    setShortcut(str):设置快捷键方法,str例如:"Alt+S"
    
​
4. 自动重复:
    结合信号与槽使用,能重复发出信号
    setAutoRepeat(bool):是否设置为自动重复
    setAutoRepeatInterval(ms):设置自动重复的时间间隔
    setAutoRepeatDelay(ms):设置自动重复的初始延迟时间(延迟时间过后才开始频率地自动重复)
    
    autoRepeat() --> bool
    autoRepeatInterval() --> int
    autoRepeatDelay() --> int
    
    应用场景:当用户点击按钮后不松开,重复性响应方法事件
​
5. 状态:
    setDown(bool):是否设置按钮为被按下状态(当被点击时退出按下状态)
    setChecked(bool):是否设置按钮被选中
    setCheckable(bool):设置是否按钮是可以选中的
    toggle():切换选中与非选中状态
    
    isDown() --> bool
    isChecked() --> bool
    isCheckable --> bool
    
    继承状态(QWidget):
    setEnable(bool)
    isEnable() --> bool
    
​
6. 排他性
    简要:如果同时存在多个按钮,而此时所有按钮有设置了排他性,则在同一时刻只能选中一个按钮(同级按钮控件)。是相对          于同级按钮控件来说,即有相同的直接父控件;如果直接父控件不同,则排他性在按钮控件相互间无关系、不影响
    
    setAutoExclusive(bool):是否设置为排他性
    autoExclusive() --> bool
    
    注意:按钮默认是有排他性的
    应用场景:设定按钮组中的按钮,单选特性
    
​
7. 点击:
    简要:代码式模拟一次点击
    click():普通点击
    animateClick(msc):动画点击,有动画效果的点击,msc动画持续时间
    
    hitButton(QPoint):设置点击有效区域,可通过重写该方法对QPoint进行判断,返回Flase:无效;返回True,有效。

信号

pressed:鼠标按下信号
released:鼠标释放信号
clicked:控件内按下 + 控件内释放信号
toggled(bool isChecked):选中状态切换信号(一般在单选框或复选框中使用)

自绘按钮

步骤:通过继承该类并复写painterEvent方法(抽象方法),并在该方法内通过相关方法绘制“需求按钮”
​
下面简单提一下需要绘制按钮使用到的方法:
QPainter(QPaintDevice):
    创建“画家”对象
    QPainterDevice:“画纸” --> “画家”配置对象(绑定“画纸”)
​
QPen(QColor,*args)
    创建一个“画笔对象”
    QColor:颜色对象
​
painter.setPen(pen):
    “画家”设置(选择)“笔”
​
painter.draw*(**args):
    “画家”进行绘画

QPushButton

简要

继承QAbstractButton(抽象类),【矩形普通】按钮

应用场景:登录按钮、注册按钮、关闭按钮、是/否操作按钮

功能作用

创建按钮:
    QPushButton():无控件的按钮组件
    QPushButton(parent):创建按钮同时,设置父控件
    QPushButton(text,parent):创建按钮同时,设置文本、父控件
    QPushButton(QIcon,text,parent):创建按钮同时,设置图标、文本、父控件
    
    
菜单:
    结合下面的QMenu类的相关方法
    setMenu(QMenu):设置菜单
    menu():获取菜单
    showMenu():展示菜单
    
​
边框是否保持扁平:
    设置扁平后,无背景颜色、去边框,不再突出显示
    setFlat(bool):是否设置为扁平
    isFlat() --> bool
    
​
默认状态处理
    使按钮具有默认状态独特显眼的样式,并会显示保持(不同于setChecked)
    setAutoDefault(bool):是否设置为自动默认按钮
    autoDefault() --> bool
    
    setDefault(bool)
    isDefault() --> bool
    应用场景:在对话框中使用

QMenu

简要

继承关系【QWidget-->QMenu】,菜单类

菜单的组成:行为动作(菜单选项)、分割线、子菜单

功能与作用

创建菜单:
    QMenu(parent)
    QMenu(str,parent)
    
    
配置菜单
    addAction(QAction):添加行为动作
    addSparator():添加分割线
    addMenu(QMenu):增加子菜单
​
​
QAction/QMenu对象方法(具体方法自行查看):
    setTitle(str):设置标题
    setIcon(QIcon):设置图标
    setData(Any):绑定数据 
    
    
action.triggered:
    菜单的行为被点击信号,可结合槽函数来处理

QCommandLinkButton

简要

继承关系【QAbstractButton --> QCommandLinkButton】,命令链接按钮
命令链接是Windows Vista引入的新控件
它的用途类似于单选按钮的用途,因为它作用在一组互斥选项之间来进行选择
命令链接按钮不应单独使用,而应作为向导和对话框中单选按钮的替代选项
外观通常类似于平面按钮的外观,但除了普通按钮文本之外,他还允许描述性文本

功能作用

创建命令链接按钮:
    QCommandLinkButton(parent)
    QCommandLinkButton(title_str,parent)
    QCommandLinkButton(title_str, description_str, parent)
​
​
设置描述:
    setDescription(str)
    description() --> str

QToolButton

简要

继承自QAbstractButton,简记:工具图标按钮
为提供一个快速访问按钮,通常是在工具栏内部使用,工具按钮通常不显示文本标签(用图标来醒目标识)

功能与作用

创建按钮:
    QToolButton(parent)
​
​
设置文本、图标、提示文本:
    同时设置文本和图标时仅显示图标
    setText(str)、setICon(QIcon)、setIconSize(QSize)
    setToolTip(str):设置文本提示
​
​
按钮样式风格:
    setToolButtonStyle(Qt.ToolButtonStyle):
        ToolButtonStyle枚举类(5),如下:
            ToolButtonIconOnly:默认,仅显示图标
            ToolButtonTextOnly:仅显示文字
            ToolButtonTextBesideIcon:文本显示在图标旁边
            ToolButtonTextUnderIcon:文本显示在图标下边
            ToolButtonFollowStyle   :遵循风格
​
​
设置箭头:
    setArrowType(Qt.ArrowType):
        ArrowType枚举类(5),如下:
            NoArrow:无箭头
            UpArrow:向上箭头
            DownArrow:向下箭头
            LeftArrow:左箭头
            RightArrow:右箭头
​
​
设置自动提升:
    设置后,点击前后会出现提升效果差
    setAutoRaise(bool)
    AutoRaise() --> bool
    
    
菜单弹出模式:
    setPopupMode(QToolButton.ToolButtonPopupMode):
        设置菜单弹出模式
        ToolButtonPopupMode选项,如下:
        DelayedPopup:延迟显示(默认)
        InstantPopup:直接显示
        MenuButtonPopup:箭头点击显示
    
    popupMode():获取菜单弹出模式

信号

triggered: 当点击action触发该信号,并会将QAction对象传给槽函数

QRadioButton

简要

继承自QAbstractButton,单选按钮
一般给用户提供若干选项中的单选操作,默认按钮互相间有“排他性”

功能作用

创建单选按钮:
    QRadioButton(parent)
    QRadioButton(text,parent)
​
其他方法继承自父类QAbstractButton

信号:继承自父类,略

问题解决

多组互斥问题:
    1. 创建父控件(QWidget)来对按钮分组
    2. 使用按钮组类QButtonGroup(在下一章节有详细介绍),这是一种推荐形式

QButtonGroup

简要

继承自QObject
提供了一个抽象的按钮容器,可以将多个按钮划分为一组
不具备可视化效果
一般放的都是可以被检查的按钮

功能作用

创建按钮组对象:
    QButtonGroup()
​
​
向按钮组添加按钮
    addButton(QAbstractButton,id=-1)
    
​
查看按钮组中的按钮:
    buttons():获取所有按钮
    button(id):根据addButton中的id获取指定按钮
    checkedButton():获取被选中的按钮
​
​
移除按钮组的按钮:
    解除按钮组中的抽象关系,并不是从界面上删除按钮
    removeButton(QAbstractButton)
    
​
绑定和获取ID:
    setId(QAbstractButton,int):为按钮组中的指定按钮设置id
    id(QAbstradctButton):获取按钮组中指定按钮的id
    checkedId(QAbstractButton):获取按钮组中被选中按钮的id
    
    
互斥设置:
    setExclusive(bool):是否设置按钮组中为互斥关系
    exclusive() --> bool

信号

buttonClicked:按钮组中按钮被点击信号 buttonPressed:按钮组中按钮被按下信号 buttonReleased:按钮组中按钮被释放信号 buttonToggled:按钮组中按钮被切换状态信号

QCheckBox

简要

继承自QAbstractButton,多选按钮
用于给用户提供多选项操作

功能作用

创建多选按钮:
    QCheckBox(parent)
    QCheckBox(text,parent)
​
​
设置是否为三态:
    三态即三种状态
    setTristate(bool):是否设置为三态
    isTristate() --> bool
    
​
设置复选框状态:
    setCheckState(Qt.CheckState):设置复选框状态
    checkState():获取复选框状态
    Qt.CheckState:
        Qt.Unchecked:未被选中
        Qt.PartiallyChecked:部分选中
        Qt.Checked:真的被选中

信号

stateChanged:复选框状态发生改变信号

标签: pyqt python ui

本文转载自: https://blog.csdn.net/m0_60633107/article/details/127289533
版权归原作者 Mr.Joden 所有, 如有侵权,请联系我们删除。

“PyQt按钮控件(总篇)”的评论:

还没有评论