将函数分配给 QLabel 中的单词

Assign function to word in QLabel

我正在寻找以下问题的解决方案: 我想为 PyQt5QLabel 中的某个单词分配一个函数,以便在单击该单词时执行该函数。

    from PyQt5.QtWidgets import QMainWindow, QLabel, QVBoxLayout, QApplication, QWidget
import sys

class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.title = "App"
        self.left = 0
        self.top = 0
        self.width = 700
        self.height = 300
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.setWindowTitle('Hauptmenü')

        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        self.vbox = QVBoxLayout()

        self.initUI()

    def initUI(self):
        self.label_text = QLabel(self)
        text = "<a href='#'>Word1</a> and <a href='#'>Word2</a>"
        self.label_text.setText(text)
        self.vbox.addWidget(self.label_text)
        self.central_widget.setLayout(self.vbox)
        self.show()

        self.label_text.linkActivated.connect(self.function1)

    def function1(self):
        print("ja")

    def function2(self):
        pass

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

    demo = Window()
    demo.show()

    sys.exit(app.exec_())

当点击 word1word2 中的 QLabel 时,应该执行不同的功能。我不知道如何将 word2 连接到第二个函数。

使用 html 功能和 style 属性覆盖默认值 html link。现在,当您单击 Word1Word2 时,labelClicked 函数接收锚点作为参数:

from PyQt5.QtWidgets import QMainWindow, QLabel, QVBoxLayout, QApplication, QWidget
import sys

class Window(QMainWindow):
    def __init__(self):
        ...

    def initUI(self):
        self.label_text = QLabel(self)
        text = 'Here is the text with <a style="text-decoration:none; color:none" href="#word1">Word1</a> and here comes the <a style="text-decoration:none; color:none" href="#word2">Word2</a>'
        self.label_text.setText(text)
        self.label_text.linkActivated.connect(self.labelClicked)
        self.vbox.addWidget(self.label_text)
        self.central_widget.setLayout(self.vbox)
        self.show()

    def labelClicked(self, link):
        print(link)

if __name__ == '__main__':
    ...