PyQt5 QCommandLinkButton – 使其可检查

PyQt5 是使用 Python 实现的一个 GUI 库,它拥有大量强大的控件,QCommandLinkButton就是其中之一。

QCommandLinkButton是一种命令链接按钮,类似于普通的QPushButton,但它提供的更多说明和可检查状态,这种按钮通常被用于设置向导流程。

要想使QCommandLinkButton可检查,首先需要设置 checkable 属性为 True。然后,在按钮被选中或取消选中时会出发 toggled 信号,我们可以通过连接这个信号来做进一步操作。

以下是一个简单的示例:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QCommandLinkButton

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        cmdlnkbtn = QCommandLinkButton('Click me', self)
        cmdlnkbtn.move(50, 50)
        cmdlnkbtn.toggle()

        cmdlnkbtn.toggled.connect(lambda: self.checkBtn(cmdlnkbtn))

        self.statusBar()

        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('QCommandLinkButton')
        self.show()

    def checkBtn(self, btn):
        if btn.isChecked():
            self.statusBar().showMessage('Checked')
        else:
            self.statusBar().showMessage('Unchecked')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在这个示例中,我们创建了一个QMainWindow,并在上面添加一个QCommandLinkButton。我们将按钮的 checkable 属性设置为 True,并且在按钮创建后将其切换为选中状态。然后我们连接了 toggled 信号来调用 checkBtn 方法,此方法检查按钮是否被选中,并在状态栏中显示相应的消息。

另一个示例,我们创建了一个具有四个选择项的向导表单。在每个页面上,用户可以完成相关选项,然后前进或后退到下一页或上一页:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QCommandLinkButton, QVBoxLayout, QWidget, QHBoxLayout, QFrame, QLabel, QRadioButton, QGroupBox, QPushButton, QRadioButton

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setWindowTitle('QCommandLinkButton')

        self.stackedWidget = QWidget(self)

        self.setGeometry(500, 300, 450, 350)

        buttons_layout = QHBoxLayout()

        self.prev_btn = QCommandLinkButton('< Previous', self)
        self.prev_btn.setEnabled(False)

        self.prev_btn.clicked.connect(lambda: self.showPrevPage())

        self.next_btn = QCommandLinkButton('Next >', self)
        self.next_btn.setDefault(True)

        self.next_btn.clicked.connect(lambda: self.showNextPage())

        buttons_layout.addStretch(1)
        buttons_layout.addWidget(self.prev_btn)
        buttons_layout.addWidget(self.next_btn)

        self.pages = []
        self.current_page = -1

        # Page 1
        page1 = QWidget()

        intro_label = QLabel('Please select your preferred language:', page1)

        vbox = QVBoxLayout(page1)

        vbox.addWidget(intro_label)
        vbox.addWidget(QRadioButton('English', page1))
        vbox.addWidget(QRadioButton('German', page1))
        vbox.addWidget(QRadioButton('Chinese', page1))

        vbox.addStretch(1)

        self.pages.append(page1)

        # Page 2
        page2 = QWidget()

        intro_label2 = QLabel('Please select your preferred theme:', page2)

        vbox = QVBoxLayout(page2)

        vbox.addWidget(intro_label2)

        group_box = QGroupBox('Selected theme:', page2)

        vbox.addWidget(group_box)

        inner_box = QHBoxLayout(group_box)

        radiobtn1 = QRadioButton('Light theme', group_box)
        radiobtn2 = QRadioButton('Dark theme', group_box)

        inner_box.addWidget(radiobtn1)
        inner_box.addWidget(radiobtn2)

        vbox.addStretch(1)

        self.pages.append(page2)

        # Page 3
        page3 = QWidget()

        vbox = QVBoxLayout(page3)

        intro_label3 = QLabel('Please enter your username:', page3)

        vbox.addWidget(intro_label3)

        user_input = QFrame(page3)
        user_input.setFrameShape(QFrame.StyledPanel)

        inner_box = QHBoxLayout(user_input)

        inner_box.addWidget(QLabel('Username:'))
        inner_box.addWidget(QPushButton('Check availability'))
        inner_box.addWidget(QPushButton('Recover username'))

        vbox.addWidget(user_input)
        vbox.addStretch(1)

        self.pages.append(page3)

        #Page 4
        self.finish_btn = QCommandLinkButton('Finish', self)
        self.finish_btn.setEnabled(False)

        self.finish_btn.clicked.connect(lambda: self.finishForm())

        vbox = QVBoxLayout(self.stackedWidget)

        vbox.addWidget(self.pages[0])

        vbox.addLayout(buttons_layout)

        self.stackedWidget.setLayout(vbox)

        self.setCentralWidget(self.stackedWidget)

    def showPrevPage(self):
        self.current_page -= 1
        self.stackedWidget.setCurrentWidget(self.pages[self.current_page])

        if self.current_page == 0:
            self.prev_btn.setEnabled(False)
        if self.current_page < 3:
            self.next_btn.setText('Next >')
            self.next_btn.setEnabled(True)

    def showNextPage(self):
        self.current_page += 1
        self.stackedWidget.setCurrentWidget(self.pages[self.current_page])

        if self.current_page > 0:
            self.prev_btn.setEnabled(True)
        if self.current_page == 2:
            self.next_btn.setText('Finish')
            self.finish_btn.setEnabled(True)
        if self.current_page == 3:
            self.stackedWidget.setCurrentWidget(self.finish_btn)

    def finishForm(self):
        self.statusBar().showMessage('Form finished')
        self.close()

if __name__ == '__main__':
    app = QApplication(sys.argv)

    ex = Example()
    ex.show()

    sys.exit(app.exec_())

在这个示例中,我们创建了一个多页向导表单,它有四个页面,其中每个页面作为一个单独的 QWidget,分别进行不同的设置。在每个页面中,我们使用 QRadioButton 和 QGroupBox 控件。设置 QCommandLinkButton 作为向导页面之间的前进和后退按钮,根据页面数量灵活的变化。随着向导的进行,我们还可以根据当前页面的不同,设置状态显示的不同内容。

总之,PyQt5 的 QCommandLinkButton 功能非常强大,可以帮助我们创建更加完善的GUI应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 QCommandLinkButton – 使其可检查 - Python技术站

(0)
上一篇 2023年5月12日
下一篇 2023年5月12日

相关文章

  • PyQt5 QDateTimeEdit – 设置包覆属性

    首先我们来了解一下 PyQt5 中的 QDateTimeEdit 控件。 QDateTimeEdit 是一个用于编辑时间和日期的控件,用户可以使用它手动输入,也可以通过弹出的日历控制选择日期和时间。同时,QDateTimeEdit 还支持格式化日期和时间的显示。 接下来我们来看一下如何设置 QDateTimeEdit 的属性值。 设置 QDateTimeEd…

    python 2023年5月12日
    00
  • PyQt5 – 为组合框添加动作

    下面是Python的”PyQt5 – 为组合框添加动作”的完整使用攻略,包括了示例说明。 目录 概述 步骤 示例 总结 概述 Python库PyQt5是一个广泛使用的Python GUI工具包。它提供了一个套件,以便开发者使用Python编写应用程序,可以在不同的平台上运行(如Windows,Linux,Mac OS等)。PyQt5支持许多GUI组件,其中之…

    python 2023年5月10日
    00
  • PyQt5 QCalendarWidget 获得毫米级的高度

    下面我将详细讲解Python中如何使用PyQt5的QCalendarWidget获得毫米级的高度: 简介 QCalendarWidget是PyQt5中的一个日历插件,可以用于显示当月的日历,同时还支持选择日期和设置日期的功能。该插件的默认高度为170个像素(px),而如果想要获得毫米级的高度,则需要进行一些特殊的设置和计算。 步骤 导入QCalendarWi…

    python 2023年5月12日
    00
  • PyQt5 QSpinBox – 访问字体名称

    PyQt5是一个流行的Python GUI toolkit,可以用来开发各种桌面应用程序。QSpinBox是PyQt5中一个用来实现数字输入框控件的类,可以让用户输入数字。本文将详细介绍如何使用QSpinBox以及如何访问字体名称。 安装PyQt5 PyQt5可以通过pip安装,使用以下命令: pip install PyQt5 使用QSpinBox 要使用…

    python 2023年5月13日
    00
  • PyQt5 QColorDialog – 当前颜色改变的信号

    PyQt5是Python的一个GUI编程工具。QColorDialog是它中的一种颜色选择对话框。QColorDialog可以让用户选择颜色,同时能够监听当前颜色改变的信号。本篇攻略将详细介绍PyQt5 QColorDialog-当前颜色改变的信号的完整使用方法。 1. 引入包 使用PyQt5中的QColorDialog,首先需要在Python代码中引入Py…

    python 2023年5月12日
    00
  • PyQt5 – 当新项目被选中时如何隐藏组合框

    下面是使用PyQt5隐藏组合框的完整攻略。 相关知识 在开始之前我们先来了解一下相关知识: PyQt5:PyQt5是一款流行的Python框架,它提供了一个类库,可以用来开发GUI程序。它是Qt框架的Python绑定。 组合框(QComboBox):QComboBox是PyQt5中的一个控件,用来提供一个下拉列表框,用户可以从其中选择一个选项。 信号和槽机制…

    python 2023年5月10日
    00
  • PyQt5 – 进度条的resetFormat()方法

    PyQt5是Python语言下的GUI编程框架,它允许开发者使用Python语言快速创建跨平台的图形界面应用程序。其中,进度条是PyQt5框架中常用的一种组件之一,resetFormat()方法是其中的一个函数,用于重置进度条的文字提示格式。下面我们将详细介绍该函数的完整使用攻略。 1. 函数原型 resetFormat()方法是QtWidgets.QPro…

    python 2023年5月10日
    00
  • PyQt5 QColorDialog – 获取当前颜色

    针对Python的PyQt5 QColorDialog-获取当前颜色的使用攻略,我会给出详细的代码和解释。 1. QColorDialog简介 QColorDialog是Qt的一个颜色选择对话框,可以用于让用户选择颜色。通过该模块的使用,我们可以在Python中添加一个颜色选择器。 2. 获取当前颜色的方法 在使用QColorDialog选择颜色后,我们需要…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部