PyQt5 QCommandLinkButton – 添加动作对象

  • Post category:Python

当使用 PyQt5 开发 GUI 应用程序时,可以使用 QCommandLinkButton 部件来为用户提供链接和快捷方式,如打开网页、打开文件或执行命令等。本文将提供使用 PyQt5 创建 QCommandLinkButton 时如何添加动作对象的完整攻略。

添加动作对象

可以使用 addAction() 方法将动作对象添加到 QCommandLinkButton 控件中。当用户单击按钮时,动作对象将被发射,从而触发操作,比如打开文件或关闭应用程序。

以下是添加动作对象的代码示例:

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

class Example(QMainWindow):

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

        self.initUI()

    def initUI(self):

        cmdButton = QCommandLinkButton('Open File', self)
        cmdButton.move(50, 50)
        cmdButton.setToolTip('This is a QCommandLinkButton widget')

        # 创建动作对象
        act = QAction(self)
        act.setText('Open')
        act.triggered.connect(self.openFile)

        # 将动作对象添加到按钮中
        cmdButton.addAction(act)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QCommandLinkButton - 添加动作对象')
        self.show()

    def openFile(self):
        print('Open file')

if __name__ == '__main__':

    app = QApplication([])
    ex = Example()
    app.exec_()

在此示例中,我们创建了一个名为 Example 的主窗口,并在主窗口中创建了一个名为 cmdButton 的 QCommandLinkButton。我们创建了一个 QAction 对象并将其文本设置为“Open”,并将其与打开文件的方法 openFile() 绑定。最后,我们使用 addAction() 将动作对象添加到按钮中。

传递参数

在 PyQT5 中,可以使用 setData() 函数将数据传递给动作对象,该数据可以在执行操作时使用。例如,可以使用按钮上的文本标签来确定要打开的文件。下面是一个示例:

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

class Example(QMainWindow):

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

        self.initUI()

    def initUI(self):

        cmdButton = QCommandLinkButton('Open File', self)
        cmdButton.move(50, 50)
        cmdButton.setToolTip('This is a QCommandLinkButton widget')

        # 创建动作对象,并传递参数
        act = QAction(self)
        act.setText('Open')
        act.setData('sample.txt')
        act.triggered.connect(self.openFile)

        # 将动作对象添加到按钮中
        cmdButton.addAction(act)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QCommandLinkButton - 传递参数')
        self.show()

    def openFile(self):
        # 从动作对象获取数据,打开指定文件
        fileName = self.sender().data()
        print('Open file: ' + fileName)

if __name__ == '__main__':

    app = QApplication([])
    ex = Example()
    app.exec_()

在此示例中,我们创建了一个动作对象,并使用 setData() 方法将文件名“sample.txt”传递给动作对象。在 openFile() 方法中,我们使用 sender() 方法访问动作对象,并将文件名从数据中获取并打开该文件。

这就是使用 PyQt5 创建 QCommandLinkButton 并添加动作对象的完整攻略。