class QAbstractButton#

QAbstractButton 类是按钮小部件的抽象基类,提供了按钮的共同功能。 更多信息

Inheritance diagram of PySide6.QtWidgets.QAbstractButton

继承者: QToolButtonQRadioButtonQPushButtonQCommandLinkButtonQCheckBox

概要#

属性#

方法#

虚函数#

槽函数#

信号#

说明

本文档可能包含从C++自动翻译成Python的代码片段。我们欢迎使用对这些片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来通知我们。

详细说明#

警告

本节包含从C++自动翻译成Python的代码片段,可能包含错误。

此类实现了抽象按钮。本类的子类处理用户操作,并指定如何绘制按钮。

QAbstractButton为推按钮和可检查(切换)按钮提供支持。可检查按钮在QRadioButtonQCheckBox类中实现。推按钮在QPushButtonQToolButton类中实现;如果需要,这些也提供切换行为。

任何按钮都可以显示包含文本和图标的标签。使用setText()设置文本;使用setIcon()设置图标。如果按钮被禁用,则其标签会更改,以便按钮具有“禁用”的外观。

如果按钮是包含带字符('&',即&字符)的字符串的文本按钮,则QAbstractButton会自动创建快捷键。例如

button = QPushButton(tr("Rock and Roll"), self)

Alt+C快捷键被分配给按钮,即,当用户按下Alt+C时,按钮将调用animateClick()。有关详细信息,请参阅QShortcut文档。要显示实际的&字符,请使用‘&&’。

您还可以使用setShortcut()函数设置自定义快捷键。这对于没有文本的按钮很有用,因为这些按钮无法自动获得快捷键。

button.setIcon(QIcon(":/images/print.png"))
button.setShortcut(tr("Alt+F7"))

Qt提供的大部分按钮(如:QPushButtonQToolButtonQCheckBox、和QRadioButton)都可以显示文本和图标。

可以使用setDefault()setAutoDefault()方法使按钮成为对话框中的默认按钮。

QAbstractButton为按钮提供了大部分使用状态。

  • isDown()指示按钮是否被按下

  • isChecked()指示按钮是否被选中。只有可复选的按钮可以被选中或取消选中(见下文)。

  • isEnabled()指示按钮是否可以被用户按下。

    说明

    与其它小部件不同,从QAbstractButton派生出的按钮即使在禁用状态下也能接受鼠标事件和上下文菜单事件。

  • setAutoRepeat()设置按钮是否会在用户按下时自动重复。`autoRepeatDelay`和`autoRepeatInterval`定义了自动重复的方式。

  • setCheckable()设置按钮是否是一个切换按钮。

methods isDown()isChecked() 的区别如下。当用户点击切换按钮来勾选它时,按钮首先处于 按下 状态,然后释放到 勾选 状态。当用户再次点击它(取消勾选它)时,按钮首先移动到 按下 状态,然后到 未勾选 状态(methods isChecked()isDown() 都为 false)。

QAbstractButton 类提供四个信号。

  1. pressed() 信号在鼠标左键在按钮内部按下时发出。

  2. released() 信号在鼠标左键释放时发出。

  3. clicked() 信号在按钮被按下然后释放、当按下快捷键或调用 click()animateClick() 时发出。

  4. toggled() 信号在切换按钮的状态改变时发出。

要继承 QAbstractButton ,您必须至少重新实现 paintEvent() 来绘制按钮的轮廓和文本或图象。通常还建议实现 sizeHint(),有时还会实现 hitButton()(以确定按钮点击是否在按钮内部)。对于具有超过两个状态(如三态按钮)的按钮,您还需要重新实现 checkStateSet()nextCheckState()

请参阅

QButtonGroup

说明

当使用 from __feature__ import true_property 时,可以直接使用属性,否则可以通过访问器函数进行使用。

属性autoExclusiveᅟ: bool#

该属性表示是否启用了自动排他性。

如果启用了自动排他性,同一父窗口下的可选中按钮将表现得像属于同一个排他性按钮组的一部分。在排他性按钮组中,任何时刻只能选中一个按钮;选中另一个按钮会自动取消选中之前的按钮。

该属性对按钮组内的按钮没有影响。

默认情况下,autoExclusive属性是关闭的,除非是单选按钮。

请参阅

QRadioButton

访问函数
属性autoRepeatᅟ: bool#

该属性表示是否启用了自动重复。

如果启用了自动重复,则在按钮按下时,pressed()released(),以及clicked()信号会以固定时间间隔发出。默认情况下,autoRepeat属性是关闭的。初始延迟和重复间隔以毫秒为单位,通过autoRepeatDelayautoRepeatInterval定义。

注意:如果按钮是由快捷键按下,则自动重复将由系统计时,而不是该类。在这种情况下,pressed()released()clicked()信号将像正常情况一样发出。

访问函数
属性autoRepeatDelayᅟ: int#

该属性表示自动重复的初始延迟。

如果autoRepeat被启用,则autoRepeatDelay定义了自动重复开始前的初始延迟时间(以毫秒计)。

访问函数
属性 autoRepeatInterval: int#

此属性存储自动重复的间隔。

如果autoRepeat被启用,则autoRepeatInterval定义了自动重复间隔的长度(毫秒)。

访问函数
属性 checkable: bool#

此属性存储按钮是否可勾选。

默认情况下,按钮不可勾选。

请参阅

checked

访问函数
属性 checked: bool#

此属性存储按钮是否被勾选。

只有可勾选的按钮才能被勾选。默认情况下,按钮未勾选。

请参阅

checkable

访问函数
属性 down: bool#

此属性存储按钮是否被按下。

如果此属性为true,则按钮被按下。如果将此属性设置为true,则不会发出信号pressedclicked。默认值为false。

访问函数
属性 icon: QIcon#

此属性存储按钮上显示的图标。

图标的默认大小由GUI样式定义,但可以通过设置属性iconSize进行调整。

访问函数
属性 iconSize: QSize#

此属性保存用于此按钮的图标大小。

默认大小由GUI样式定义。这是图标的最大大小。较小的图标不会被放大。

访问函数
属性 shortcut: QKeySequence#

此属性保存与按钮关联的快捷键。

访问函数
属性 text: str#

此属性保存显示在按钮上的文本。

如果按钮没有文本,则text()函数将返回空字符串。

如果文本中包含 Ampersand 字符(’&’),则自动为其创建快捷键。‘&’ 后面跟着的字符将被用作快捷键。如果没有通过文本定义快捷键,则将覆盖或清除任何先前定义的快捷键。有关详细信息,请参阅QShortcut文档。要显示实际的 ampersand,请使用 ‘&&’。

没有默认的文本。

访问函数
__init__([parent=None])#
参数:

parentQWidget

构建一个包含 parent 的抽象按钮。

animateClick()#

执行动画点击:按钮立即按下,100ms后释放。

在按钮释放之前再次调用此函数会重置释放定时器。

与点击关联的所有信号都会适当地发出。

如果按钮没有启用(《PySide6.QtWidgets.QWidget.setEnabled()`),则此函数不会做任何事情。

请参阅

click()

autoExclusive()#
返回类型:

bool

请参阅

setAutoExclusive()

属性 autoExclusiveᅟ 的获取器。

autoRepeat()#
返回类型:

bool

请参阅

setAutoRepeat()

属性 autoRepeatᅟ 的获取器。

autoRepeatDelay()#
返回类型:

int

属性autoRepeatDelay的获取器。

autoRepeatInterval()#
返回类型:

int

属性autoRepeatInterval的获取器。

checkStateSet()#

这是一个虚处理程序,当使用setChecked时会被调用,除非它是在nextCheckState内部被调用。它允许子类重置它们的中间按钮状态。

请参阅

nextCheckState()

click()#

执行点击操作。

所有与点击相关的基本信号都会按适当的方式发出。如果按钮是可勾选的,按钮的状态将切换。

如果按钮没有启用(《PySide6.QtWidgets.QWidget.setEnabled()`),则此函数不会做任何事情。

请参阅

animateClick()

clicked([checked=false])#
参数:

checked – bool

当按钮被激活(即,在鼠标指针在按钮内按下然后释放)时,当按下快捷键,或者当调用clickanimateClick时,发出此信号。值得注意的是,如果你调用setDownsetCheckedtoggle,则不会发出此信号。

如果按钮是可勾选的,当按钮被勾选时,checked为真,当按钮未被勾选时为假。

请参阅

pressed released toggled

group()#
返回类型:

QButtonGroup

返回此按钮所属的组。

如果按钮不是任何QButtonGroup的成员,则此函数返回None

请参阅

QButtonGroup

hitButton(pos)#
参数:

posQPoint

返回类型:

bool

如果pos在可点击按钮矩形内部,则返回true;否则返回false

默认情况下,可点击区域是整个小部件。子类可以重写此函数以支持不同形状和大小的可点击区域。

icon()#
返回类型:

QIcon

请参阅

setIcon()

该属性icon的获取器。

iconSize()#
返回类型:

QSize

请参阅

setIconSize()

该属性iconSize的获取器。

isCheckable()#
返回类型:

bool

该属性checkable的获取器。

isChecked()#
返回类型:

bool

该属性checked的获取器。

isDown()#
返回类型:

bool

该属性down的获取器。

nextCheckState()#

当按钮被点击时,这个虚函数将被调用。默认实现会如果按钮isCheckable调用setChecked(! isChecked())。这允许子类实现中间按钮状态。

请参阅

checkStateSet()

pressed()#

当按钮按下时,会发出此信号。

请参阅

released() clicked()

released()#

当按钮释放时,会发出此信号。

setAutoExclusive(arg__1)#
参数:

arg__1 – bool

请参阅

autoExclusive()

属性 autoExclusiveᅟ 的设置器。

setAutoRepeat(arg__1)#
参数:

arg__1 – bool

请参阅

autoRepeat()

属性 autoRepeatᅟ 的设置器。

setAutoRepeatDelay(arg__1)#
参数:

arg__1 – int

请参阅

autoRepeatDelay()

属性 autoRepeatDelayᅟ 的设置器。

setAutoRepeatInterval(arg__1)#
参数:

arg__1 – int

属性 autoRepeatIntervalᅟ 的设置器。

setCheckablearg__1#
参数:

arg__1 – bool

请参阅

isCheckable()

属性 checkableᅟ 的设置器。

setCheckedarg__1#
参数:

arg__1 – bool

请参阅

isChecked()

属性 checkedᅟ 的设置器。

setDown(arg__1)#
参数:

arg__1 – bool

请参阅

isDown()

设置属性 down 的值。

setIcon(icon)#
参数:

iconQIcon

请参阅

icon()

设置属性 icon 的值。

setIconSize(size)#
参数:

sizeQSize

请参阅

iconSize()

设置属性 iconSize 的值。

setShortcut(arg__1)#
参数:

arg__1Key

setShortcut(key)
参数:

keyQKeySequence

请参阅

shortcut()

设置属性 shortcut 的值。

setText(text)#
参数:

text – 字符串

请参阅

text()

设置属性 text 的值。

shortcut()#
返回类型:

QKeySequence

请参阅

setShortcut()

属性 shortcut 的获取器。

text()#
返回类型:

字符串

请参阅

setText()

属性 text 的获取器。

toggle()#

切换可选中按钮的状态。

请参阅

checked

toggled(checked)#
参数:

checked – bool

警告

本节包含从C++自动翻译成Python的代码片段,可能包含错误。

每当可勾选按钮改变其状态时,就会发射此信号。checked为true时表示按钮被勾选,为false时表示按钮未被勾选。

这可能是用户操作的结果,click() 槽激活,或因为调用了 setChecked()

在发射此信号之前,排他性按钮组的按钮状态将被更新。这意味着槽可以针对状态发生变化的组中的按钮发出的“关闭”信号或“开启”信号执行操作。

例如,可以使用以下模式实现一个只响应新勾选按钮发出的信号但忽略未被勾选按钮发出的信号的槽

def reactToToggle(self, checked):

   if checked:
      # Examine the new button states.
      ...

可以使用 QButtonGroup 类来创建按钮组,并通过 buttonClicked() 信号监测按钮状态的更新。

请参阅

checked clicked()

属性 checkedᅟ 的通知信号。