PyQt6第四章控件功能之4.2常用控件(4.2.4命令按钮:QPushButton)

4.2.4命令按钮:QPushButton

分为两部分:1. 按钮类控件、2. 命令按钮

1. 按钮类控件

在Qt Designer“窗口部件盒”中,包含按钮类控件如下:

(1)Push Button:命令按钮控件,对应QPushButton类。

(2)Tool Button:工具按钮控件,对应QToolButton类,为命令或选项提供快速访问按钮,通常在QToolBar中使用。

(3)Radio Button:单选按钮控件,对应QRadioButton类。

(4)Check Button:检查按钮控件,对应QCheckButton类。

(5)Command Link Button:命令链接按钮控件,对应QCommandLinkButton类。

(6)Dialog Button Box:对话命令按钮控件,对应QDialogButtonBox类。

2. 命令按钮

为QPushButton设置快捷键,比如文本标题 “&Download”快捷键是“Alt+D”,“&”不会被显示出来,但字母D会显示一条下画线。如果只想显示“&”,那么需要像转义一样使用“&&”。 QPushButton类中的常用方法如下:

setCheckable(逻辑值):设置按钮是否已经被选中。如果为True, 则表示按钮将保持已点击和释放状态

setlcon(参数):设置按钮上的图标。参数:Qtchui.QIcon('图标路径')

setIconSize(参数):设置按钮图标的大小。参数:QtCore.QSize(int width,int height)

setEnabled(逻辑值):设置按钮是否可用。如果为False时,按钮变成不可用状态,点击它不会发射信号

setDefault():设置按钮的默认状态

setShortcut(参数):设置按钮的快捷键,参数:可以设置为键盘中的按键或组合键

setText(文本):设置按钮的显示文本

text():返回按钮的显示文本

isChecked():返回按钮的状态。如果为True时,表示按钮选择状态;为False为释放状态

toggle():在按钮状态之间进行切换

【例4.5】QPushButton命令按钮测试,测试结果如下:

import sys  # 导入sys模块,用于访问与Python解释器紧密相关的一些变量和函数

from PyQt6.QtGui import *  # 从PyQt6.QtGui模块导入所有内容,这个模块包含GUI相关的图形类

from PyQt6.QtWidgets import *  # 从PyQt6.QtW idgets模块导入所有内容,这个模块包含GUI相关的窗口部件类


class MyDialog(QDialog):  # 定义一个名为MyDialog的类,它继承自QDialog,表示一个对话框窗口

    def __init__(self, parent=None):  # 初始化方法,用于设置对话框的初始状态
        super(MyDialog, self).__init__(parent)  # 调用父类QDialog的初始化方法

        self.setWindowTitle("QPushButton测试")  # 设置对话框的标题为"QPushButton测试"

        self.btn1 = QPushButton("文本按钮")  # 创建一个QPushButton对象,并设置其文本为"文本按钮"

        self.btn1.setCheckable(True)  # 设置按钮为可选中状态

        self.btn1.toggle()  # 切换按钮的选中状态,如果原来未选中,则选中;如果原来选中,则取消选中

        self.btn1.clicked.connect(lambda: self.btnText(self.btn1))  # 当按钮被点击时,连接一个lambda函数到btnText方法

        self.btn2 = QPushButton('图片按钮')  # 创建另一个QPushButton对象,并设置其文本为"图片按钮"

        self.btn2.setIcon(QIcon(QPixmap('E:\PyCode\Pyqt6\ProjectFile02\images\python.ico')))  # 为按钮设置图标,图标图片来自"images/python.ico"

        self.btn2.clicked.connect(lambda: self.btnText(self.btn2))  # 当按钮被点击时,连接一个lambda函数到btnText方法

        self.btn3 = QPushButton("&Change")  # 创建第三个QPushButton对象,并设置其文本为"&Change"(其中"&"表示快捷键)

        self.btn3.setDefault(True)  # 设置此按钮为默认按钮

        self.btn3.clicked.connect(self.btnChange)  # 当按钮被点击时,连接btnChange方法

        self.btn3.clicked.connect(lambda: self.btnText(self.btn3))  # 同样的,当按钮被点击时,也连接一个lambda函数到btnText方法

        vlayout = QVBoxLayout()  # 创建一个垂直布局对象

        vlayout.addWidget(self.btn1)  # 将btn1添加到垂直布局中

        vlayout.addWidget(self.btn2)  # 将btn2添加到垂直布局中

        vlayout.addWidget(self.btn3)  # 将btn3添加到垂直布局中

        self.setLayout(vlayout)  # 将对话框的布局设置为刚刚创建的垂直布局

    def btnChange(self):  # 定义一个名为btnChange的方法,当btn3被点击时调用
        if self.btn1.isChecked():  # 检查btn1是否被选中
            print("文本按钮选择")  # 如果被选中,打印"文本按钮选择"
        else:
            print("文本按钮释放")  # 如果未被选中,打印"文本按钮释放"

        if self.btn2.isEnabled():  # 检查btn2是否可用
            self.btn2.setEnabled(False)  # 如果可用,则设置为不可用
        else:
            self.btn2.setEnabled(True)  # 如果不可用,则设置为可用

    def btnText(self, btn):  # 定义一个名为btnText的方法,当按钮被点击时调用,并传入被点击的按钮对象
        print("单击" + btn.text() + "!")  # 打印"单击"加上按钮的文本+"!"


if __name__ == '__main__':  # 当这个脚本被直接运行时,执行以下代码
    app = QApplication(sys.argv)  # 创建一个QApplication对象,sys.argv是命令行参数列表

    d = MyDialog()  # 创建一个MyDialog对象

    d.show()  # 显示对话框窗口

    sys.exit(app.exec())  # 进入Qt的事件循环,等待事件(如按钮点击)发生,直到应用退出

这段代码主要实现了以下功能:

  1. 按钮功能演示:创建了一个自定义对话框,该对话框中包含了三个按钮。
  2. 文本按钮的切换:第一个按钮是一个可切换状态的文本按钮,当点击时,其状态会切换,并且当第三个按钮被点击时,会检查这个文本按钮的状态并打印相应的信息。
  3. 图片按钮的启用/禁用:第二个按钮是一个带有图标的图片按钮,当第三个按钮被点击时,这个图片按钮的启用状态会切换。
  4. 按钮点击事件处理:每个按钮被点击时,都会调用btnText方法打印出按钮的文本。

使用的布局和控件如下:

  • 布局QVBoxLayout,这是一个垂直布局,用于将按钮垂直堆叠。
  • 控件
    • QDialog:这是一个对话框窗口,继承自QWidget,但专门用于显示简短的信息并请求用户响应。
    • QPushButton:这是按钮控件,用于响应用户点击事件。

关键语句包括:

  1. 设置按钮点击事件

    self.btn1.clicked.connect(lambda:self.btnText(self.btn1))  
    self.btn2.clicked.connect(lambda:self.btnText(self.btn2))  
    self.btn3.clicked.connect(self.btnChange)  
    self.btn3.clicked.connect(lambda:self.btnText(self.btn3))

    这里使用connect方法将按钮的clicked信号与特定的槽函数连接起来。当按钮被点击时,相应的槽函数会被调用。

  2. 切换按钮状态

    self.btn1.setCheckable(True)  
    self.btn1.toggle()

    这里设置了btn1为可切换状态的按钮,并初始化为选中状态。

  3. 设置按钮图标

    self.btn2.setIcon(QIcon(QPixmap("images/python.ico")))

    这里设置了btn2的图标为images/python.ico

  4. 检查按钮状态并切换图片按钮的启用状态

    if self.btn1.isChecked():  
        print("文本按钮选择")  
    else:  
        print("文本按钮释放")  
    
    if self.btn2.isEnabled():  
        self.btn2.setEnabled(False)  
    else:  
        self.btn2.setEnabled(True)

    这段代码在btnChange方法中检查btn1的选中状态,并切换btn2的启用状态。

  5. 打印按钮文本

    def btnText(self, btn):  
        print("单击"+btn.text()+"!")

    这是一个槽函数,用于打印被点击按钮的文本。

总的来说,这段代码通过按钮的点击事件、状态切换和图标设置,展示了QPushButton控件的一些基本用法和事件处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值