Pyside6 按钮控件---普通按钮QPushButton和命令链接按钮QCommondLinkButton

.一、QPushButton的介绍(官翻)

普通按压按钮或命令按钮是图形用户界面中最常用的部件。(点击)按钮来命令计算机执行某些操作,或回答一个问题。典型的按钮有OK、Apply、Cancel、Close、Yes、No和Help。
命令按钮是矩形的,通常显示描述其操作的文本标签。快捷键可以通过在首选字符前面加上&符号来指定。例如:

button = QPushButton("Download", self)

在本例中,快捷键为Alt+D。详细信息请参阅QShortcut文档(要显示实际的&符号,请使用' && ')。
按钮显示一个文本标签,以及一个可选的小图标。这些属性可以在构造函数中设置,稍后使用setText()和setIcon()修改。如果按钮被禁用,文本和图标的外观将根据GUI样式进行操作,使按钮外观看起来是“禁用”样式(上一节已经说明)。
当按钮被鼠标、空格键或快捷键激活时,它就会发出被点击()的信号。连接到这个信号来执行按钮的动作。按钮也提供不太常用的信号,例如pressed()和release()。
命令按钮在对话框中是默认的自动默认按钮,也就是说,当它们接收到键盘输入焦点时,它们会自动成为默认的push按钮。默认按钮是一个按压类按钮,当用户在对话框中按下Enter或Return键时,它会被激活。你可以用setAutoDefault()来改变这一点。请注意,自动默认按钮保留了一些额外的空间,这是绘制默认按钮指示器所必需的。如果你不希望按钮周围有空格,可以调用setAutoDefault (false)。
在过去的十年中,button组件已经发展到可以适应很多变化。微软风格指南现在显示了大约10种不同的Windows按钮状态,如果考虑到所有功能的组合,文字表明还有几十种更多的按钮状态。

最重要的模式或状态是:

  • 可用与否(灰色显示,禁用)。
  • 标准按钮,切换按钮或菜单按钮。
  • 打开或关闭(仅用于切换按钮)。
  • 默认或正常。对话框中的默认按钮通常可以使用Enter或Return键“点击”。
  • 是否自动重复。
  • 是否按下。

一般规则是,当用户单击应用程序或对话框窗口时,应用程序或对话框窗口执行某个操作(例如应用、取消、关闭和帮助),以及当部件应该是一个带有文本标签的宽矩形时,使用按压按钮。通常用于改变窗口状态而不是执行操作的小正方形按钮(例如QFileDialog右上角的按钮)不是命令按钮,而是工具按钮。Qt为这些按钮提供了一个特殊的类(QToolButton)。
如果你需要切换行为(参见setCheckable()),或者需要一个按钮,当向下按下时,会自动重复激活信号(参见setAutoRepeat()),那么命令按钮可能不是你想要的。当有疑问时,使用工具按钮。

命令按钮的一种变体是菜单按钮。它们提供的不是一个命令,而是多个命令,因为当点击它们时,它们会弹出一个选项菜单。使用方法setMenu()将弹出式菜单和push按钮关联起来。
其他类型的按钮是选项按钮(参见QRadioButton)和复选框(参见QCheckBox)。
在Qt中,QAbstractButton基类提供了大多数模式和其他API,而QPushButton提供了GUI逻辑。有关API的更多信息,请参阅QAbstractButton。

上文所说的按压按钮和命令按钮是QPushButton的两种使用方式,一种是QPushButton()只有点击的功能,被点击后执行操作(具体操作看槽函数中的内容编制),另一种是QPushButton()作为命令按钮,即点击它的时候不会直接执行操作,而是弹出一个菜单,通过菜单中的Action去完成相应的操作。我们将在接下来的学习解释它们的区别。

二、QPushButton的常用方法

1.QPushButoon对象的创建

API函数

参数说明

返回值

功能作用

QPushButton()

None

None

创建一个无父控件的按钮(独立窗口)

QPushButton(icon,text,parent)

icon:QIcon/QPixmap

text:str,parent:QWidget

None

创建一个有图标,有提示文本和父控件的按钮

QPushButton(parent)

,parent:QWidget

None

创建一个有父控件的按钮

QPushButton(text,parent)

text:str,parent:QWidget

None

创建一个有提示文本和父控件的按钮

2.QPushButton的其他常用方法

API函数

参数说明

返回值

功能作用

setEnable(self,arg_1)

arg_1:bool

None

设置按钮是否启用

isEnable(self

None

bool

获取按钮是否启用

setDefault(self, arg__1)

arg_1:bool

None

设置按钮是否为默认按钮

isDefault(self)

None

bool

获取按钮是否为默认按钮

setAutoDefault(self, arg__1)

arg_1:bool

None

设置按钮是否为自动默认按钮

autoDefault(self)

None

bool

获取按钮是否为自动默认按钮

setFlat(self, arg__1)

arg_1:bool

None

设置按钮是否为扁平化

isFlat(self)

None

bool

获取按钮是否为扁平化

setMenu(self, menu)

menu:QMenu

None

设置菜单

showMenu(self)

None

None

弹出菜单

menu(self)

None

None

获取菜单

QPushButton的常用方法大部分继承自QAbstractButton,包括上面列出的方法中如setDefault( )、setAutoDefault( )。这里说一下什么是默认按钮。

可以看到,比如这种对话框类型(字体对话框,颜色、打印对话框等),OK,Canel,Exit,Open等按钮都属于QPushButton,设置默认按钮后外观上有一个蓝色标识框,当点击Enter键时会自动触发点击事件。这是用内置对话框做例子,如果我们自己创建一个QWidget作为顶窗口,其子控件为多个QPushButton,当我们设置其中一个为默认按钮时,也会有标识框。但是,这个有标识框的按钮并不具有焦点,点击Enter是没有作用的,需要我们手动setFocus(True)。

setFlat()方法,是将按钮的外观由凸起效果改为平面。

setMenu()即是将普通按钮变为命令按钮,这两个方法的作用是为普通按钮增加一个弹出菜单QMenu,showMenu()方法则通常是通过clicked信号连接到的内置函数,用于菜单的弹出控制。而关于QMenu我们将在菜单的章节具体学习。这里提供一个例子,用于命令按钮与普通按钮的区别。

example:

# -*- codeing:utf-8 -*-
from PySide6.QtWidgets import QWidget,QApplication,QPushButton,QMenu
from PySide6.QtGui import QAction
import sys

class testWindow(QWidget):
    def __init__(self):
        super(testWindow, self).__init__()
        self.resize(500,500)
        self.setWindowTitle("默认按钮测试")

        self.btn1 = QPushButton("普通按压按钮", self)
        self.btn1.move(100, 100)

        self.btn2 = QPushButton("扁平命令按钮", self)
        self.btn2.move(100, 200)
        self.btn2.setDefault(True)


        menu = QMenu(self.btn2)
        menu.addActions([QAction("复制",self),QAction("粘贴",self),QAction("剪切",self)])
        self.btn2.setMenu(menu)
        self.btn2.clicked.connect(lambda :self.btn2.showMenu())

        self.btn3 = QPushButton("扁平按钮", self)
        self.btn3.move(100, 300)
        self.btn3.setFlat(True)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = testWindow()
    win.show()
    sys.exit(app.exec())

运行结果:

三、命令链接按钮QCommondLinkButton

QCommandLinkButton按钮是QPushButton的子类,所以QPushButton的所有方法其都可以使用。其在QPushButton的基础上默认增加了箭头图标(当然图标通过setIcon()可以更换)。它设计的目的是为导航栏设置上下翻页的按钮。所以,通常他是“上一步”和“下一步”两个按钮成对使用的, 点击它链接到槽函数从而跳转到下一个界面。

另外,它也增加了可以设置描述性文本的函数setDescription()。

QCommandLinkButton按钮比较简单,不做例子,这里只列出其相关方法:

API函数

参数说明

返回值

功能作用

QCommandLinkButto(self,parent

parent:QWidget

None

创建命令链接按钮

QCommandLinkButto(self,text,description,parent

text:str,description:str

parent:QWidget

None

创建命令链接按钮

QCommandLinkButto(self,text, parent

text:str

parent:QWidget

None

创建命令链接按钮

setDescription(self, description)

description:str

None

给命令链接按钮设置描述性文本

description(self)

None

str

获取命令链接按钮的描述性文本

四、QPushButton的信号

QPushButton没有自有信号,全部继承自QAbstractButton

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值