PyQt5 QCommandLinkButton – 设置自动独占属性

  • Post category:Python

PyQt5是Python的一个GUI库,它可以用来创建桌面应用程序。QCommandLinkButton是PyQt5库的一个按钮控件,它可以显示一个文本和一个图标,并且还支持自动独占属性。下面是PyQt5 QCommandLinkButton控件如何设置自动独占属性的完整使用攻略。

设置自动独占属性

可以通过以下代码来设置QCommandLinkButton的自动独占属性:

button.setAutoExclusive(True)
button.setAutoFillBackground(True)

这样,当用户点击一个设置了自动独占属性的按钮时,它会变成按下状态,而其他设置了自动独占属性的按钮则会自动恢复到未按下状态。

示例1

以下是一个简单的示例程序,展示了QCommandLinkButton如何设置自动独占属性:

from PyQt5.QtWidgets import QApplication, QMainWindow, QCommandLinkButton, QWidget
from PyQt5.QtCore import QSize
import sys


class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQt5 QCommandLinkButton-示例1")

        widget = QWidget(self)
        self.setCentralWidget(widget)

        button1 = QCommandLinkButton("按钮1", widget)
        button1.move(10, 10)
        button1.setAutoExclusive(True)
        button1.setAutoFillBackground(True)

        button2 = QCommandLinkButton("按钮2", widget)
        button2.move(10, 50)
        button2.setAutoExclusive(True)
        button2.setAutoFillBackground(True)

        button3 = QCommandLinkButton("按钮3", widget)
        button3.move(10, 90)
        button3.setAutoExclusive(True)
        button3.setAutoFillBackground(True)

        self.setMinimumSize(QSize(150, 150))
        self.setMaximumSize(QSize(150, 150))


app = QApplication(sys.argv)
example = Example()
example.show()
sys.exit(app.exec_())

运行以上代码后会显示一个包含三个QCommandLinkButton控件的窗口。因为三个按钮都设置了自动独占属性,所以只有一个按钮可以被按下。

示例2

另一个示例程序展示了当用户点击一个被设置了自动独占属性的按钮时,其他按钮会自动恢复到未按下状态:

from PyQt5.QtWidgets import QApplication, QMainWindow, QCommandLinkButton, QWidget
from PyQt5.QtCore import QSize
import sys


class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQt5 QCommandLinkButton-示例2")

        widget = QWidget(self)
        self.setCentralWidget(widget)

        button1 = QCommandLinkButton("选择1", widget)
        button1.move(10, 10)
        button1.setAutoExclusive(True)
        button1.setAutoFillBackground(True)

        button2 = QCommandLinkButton("选择2", widget)
        button2.move(10, 50)
        button2.setAutoExclusive(True)
        button2.setAutoFillBackground(True)

        button3 = QCommandLinkButton("选择3", widget)
        button3.move(10, 90)
        button3.setAutoExclusive(True)
        button3.setAutoFillBackground(True)

        self.setMinimumSize(QSize(150, 150))
        self.setMaximumSize(QSize(150, 150))

        button1.clicked.connect(lambda: self.on_button_clicked(button1))
        button2.clicked.connect(lambda: self.on_button_clicked(button2))
        button3.clicked.connect(lambda: self.on_button_clicked(button3))

    def on_button_clicked(self, button):
        print(button.text(), "被按下了")


app = QApplication(sys.argv)
example = Example()
example.show()
sys.exit(app.exec_())

运行以上代码后会显示一个包含三个QCommandLinkButton控件的窗口。因为三个按钮都设置了自动独占属性,所以只有一个按钮可以被按下。当用户点击一个按钮时,其他按钮会自动恢复到未按下状态。同时,程序会在控制台上打印出被按下的按钮的文本。