Python 如何将PQT5事件添加到标签

Python 如何将PQT5事件添加到标签,python,python-3.x,pyqt,pyqt5,qlabel,Python,Python 3.x,Pyqt,Pyqt5,Qlabel,我的问题是,我想在标签上分别添加一个事件mousePressEvent,但是在这个文本下它不起作用,因为我的一些代码不起作用 self.label2.mousePressEvent = self.credits def credits(self, event): print("credits") 这里我得到了错误AttributeError:“Window”对象没有属性“label2” 我也试过这个: label2.mousePressEvent.connect(se

我的问题是,我想在标签上分别添加一个事件mousePressEvent,但是在这个文本下它不起作用,因为我的一些代码不起作用

self.label2.mousePressEvent = self.credits

    def credits(self, event):
        print("credits")
这里我得到了错误AttributeError:“Window”对象没有属性“label2”

我也试过这个:

label2.mousePressEvent.connect(self.credits)

def credits(self):
            print("credits")
这也行不通:(任何想法如果有人能帮助我,我很高兴:( 如果您需要此处的完整代码:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
from PyQt5 import QtGui
from PyQt5 import QtWidgets

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.initMe()

    def initMe(self):

        label1 = QtWidgets.QLabel(self)
        label1.setText("Überschrift mit namen des text adventure")
        label1.setStyleSheet("font-size: 18px;color: black;")
        label1.setGeometry(50, 50, 400, 100)
        label1.move(350,50)

        label2 = QtWidgets.QLabel(self)
        label2.setText("Spielen")
        label2.setStyleSheet("font-size: 18px;color: black;")
        label2.setGeometry(50, 50, 400, 100)
        label2.move(450, 120)
        self.label2.mousePressEvent = self.spielen

        label3 = QtWidgets.QLabel(self)
        label3.setText("Settings")
        label3.setStyleSheet("font-size: 18px;color: black;")
        label3.setGeometry(50, 50, 400, 100)
        label3.move(450, 200)
        self.label3.mousePressEvent = self.settings

        label4 = QtWidgets.QLabel(self)
        label4.setText("Credits")
        label4.setStyleSheet("font-size: 18px;color: black;")
        label4.setGeometry(50, 50, 400, 100)
        label4.move(450, 280)
        self.label4.mousePressEvent = self.credits

        QToolTip.setFont(QFont("Arial", 10 ))
        button = QPushButton("Spiel beenden", self)
        button.setGeometry(50,50,150,50)
        button.setFont(QFont("Arial", 12))
        button.move(820, 420)
        button.setToolTip("<b>Button lel</b>")
        button.clicked.connect(QtCore.QCoreApplication.instance().quit)
        button.clicked.connect(self.gedruekt)
        button.setStyleSheet("background-color: white;")

        self.setGeometry(50,50,1000,500)
        self.setWindowTitle("Gui lalal einhorn")
        self.setWindowIcon(QIcon("cookie.png"))
        self.setAutoFillBackground(True)
        self.setStyleSheet("background-color: lightblue;")
        self.move(500, 250)
        self.show()

    def spielen(self, event):
        print("spielen")

    def settings(self, event):
        print("settings")

    def credits(self, event):
        print("credits")

    def gedruekt(self):
        print("Er hats getan ;(")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Window()
    sys.exit(app.exec_())
else:
    print("Gui not created, because script used at liabary")
导入系统 从PyQt5.QtCore导入* 从PyQt5.QtGui导入* 从PyQt5.QtWidgets导入* 从PyQt5导入QtCore 从PyQt5导入QtGui 从PyQt5导入QtWidgets 类窗口(QWidget): 定义初始化(自): super()。\uuuu init\uuuuu() self.initMe() def initMe(self): label1=qtwidts.QLabel(self) 标签1.setText(“文本冒险的名字”) label1.setStyleSheet(“字体大小:18px;颜色:黑色;”) 标签1.集合几何(50、50、400、100) 标签1.移动(350,50) label2=qtwidts.QLabel(self) 标签2.setText(“Spilen”) label2.setStyleSheet(“字体大小:18px;颜色:黑色;”) label2.集合几何(50、50、400、100) 标签2.移动(450120) self.label2.mousePressEvent=self.spielen label3=qtwidts.QLabel(self) label3.setText(“设置”) label3.setStyleSheet(“字体大小:18px;颜色:黑色;”) label3.集合几何(50、50、400、100) 标签3.移动(450200) self.label3.mousePressEvent=self.settings label4=qtwidts.QLabel(self) 标签4.setText(“学分”) label4.setStyleSheet(“字体大小:18px;颜色:黑色;”) label4.集合几何(50、50、400、100) 标签4.移动(450280) self.label4.mousePressEvent=self.credits setFont(QFont(“Arial”,10)) 按钮=QPushButton(“斯皮尔·比登”,自我) 按钮。设置几何图形(50,50150,50) 按钮设置字体(QFont(“Arial”,12)) 按钮移动(820420) 按钮。设置工具提示(“按钮lel”) 按钮。单击。连接(QtCore.QCoreApplication.instance().quit) 按钮。单击。连接(self.gedruekt) button.setStyleSheet(“背景色:白色;”) 自身设置几何(50,501000500) self.setWindowTitle(“Gui lalal einhorn”) self.setWindowIcon(QIcon(“cookie.png”)) self.setAutoFillBackground(True) self.setStyleSheet(“背景色:浅蓝色;”) 自行移动(500250) self.show() def Spilen(自身、事件): 印刷品(“斯皮伦”) def设置(自身、事件): 打印(“设置”) def积分(自我、事件): 打印(“学分”) def gedruekt(自我): 打印(“Er hats getan;”(“”) 如果名称=“\uuuuu main\uuuuuuuu”: app=QApplication(sys.argv) w=窗口() sys.exit(app.exec_()) 其他: 打印(“未创建Gui,因为liabary使用了脚本”)
问题在于变量不是类的成员,因此不必使用
self
实例,因为它会更改,例如:

self.label2.mousePressEvent = self.spielen
致:

如果要使用connect,这仅适用于信号,为此,我们创建一个自定义QLabel类,如下所示:

class Label(QLabel):
    clicked = pyqtSignal()
    def __init__(self, parent=None):
        QLabel.__init__(self, parent=parent)

    def mousePressEvent(self, event):
        self.clicked.emit()
在这种情况下,您将如下所示:

class Label(QLabel):
    clicked = pyqtSignal()
    def __init__(self, parent=None):
        QLabel.__init__(self, parent=parent)

    def mousePressEvent(self, event):
        self.clicked.emit()

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.initMe()

    def initMe(self):

        label1 = QLabel(self)
        label1.setText("Überschrift mit namen des text adventure")
        label1.setStyleSheet("font-size: 18px;color: black;")
        label1.setGeometry(50, 50, 400, 100)
        label1.move(350,50)

        label2 = Label(self)
        label2.setText("Spielen")
        label2.setStyleSheet("font-size: 18px;color: black;")
        label2.setGeometry(50, 50, 400, 100)
        label2.move(450, 120)
        label2.clicked.connect(self.spielen)

        label3 = Label(self)
        label3.setText("Settings")
        label3.setStyleSheet("font-size: 18px;color: black;")
        label3.setGeometry(50, 50, 400, 100)
        label3.move(450, 200)
        label3.clicked.connect(self.settings)

        label4 = Label(self)
        label4.setText("Credits")
        label4.setStyleSheet("font-size: 18px;color: black;")
        label4.setGeometry(50, 50, 400, 100)
        label4.move(450, 280)
        label4.clicked.connect(self.credits)

        QToolTip.setFont(QFont("Arial", 10 ))
        button = QPushButton("Spiel beenden", self)
        button.setGeometry(50,50,150,50)
        button.setFont(QFont("Arial", 12))
        button.move(820, 420)
        button.setToolTip("<b>Button lel</b>")
        button.clicked.connect(self.close)
        button.clicked.connect(self.gedruekt)
        button.setStyleSheet("background-color: white;")

        self.setGeometry(50,50,1000,500)
        self.setWindowTitle("Gui lalal einhorn")
        self.setWindowIcon(QIcon("cookie.png"))
        self.setAutoFillBackground(True)
        self.setStyleSheet("background-color: lightblue;")
        self.move(500, 250)
        self.show()

    def spielen(self):
        print("spielen")

    def settings(self):
        print("settings")

    def credits(self):
        print("credits")

    def gedruekt(self):
        print("Er hats getan ;(")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Window()
    sys.exit(app.exec_())
类标签(QLabel):
单击=pyqtSignal()
def uuu init uuu(self,parent=None):
QLabel.\uuuu初始化(self,parent=parent)
def鼠标压力事件(自身、事件):
self.clicked.emit()
类窗口(QWidget):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.initMe()
def initMe(self):
label1=QLabel(自)
标签1.setText(“文本冒险的名字”)
label1.setStyleSheet(“字体大小:18px;颜色:黑色;”)
标签1.集合几何(50、50、400、100)
标签1.移动(350,50)
标签2=标签(自身)
标签2.setText(“Spilen”)
label2.setStyleSheet(“字体大小:18px;颜色:黑色;”)
label2.集合几何(50、50、400、100)
标签2.移动(450120)
label2.clicked.connect(self.spielen)
标签3=标签(自身)
label3.setText(“设置”)
label3.setStyleSheet(“字体大小:18px;颜色:黑色;”)
label3.集合几何(50、50、400、100)
标签3.移动(450200)
label3.clicked.connect(自我设置)
label4=标签(自身)
标签4.setText(“学分”)
label4.setStyleSheet(“字体大小:18px;颜色:黑色;”)
label4.集合几何(50、50、400、100)
标签4.移动(450280)
label4.点击连接(self.credits)
setFont(QFont(“Arial”,10))
按钮=QPushButton(“斯皮尔·比登”,自我)
按钮。设置几何图形(50,50150,50)
按钮设置字体(QFont(“Arial”,12))
按钮移动(820420)
按钮。设置工具提示(“按钮lel”)
按钮。单击。连接(self.close)
按钮。单击。连接(self.gedruekt)
button.setStyleSheet(“背景色:白色;”)
自身设置几何(50,501000500)
self.setWindowTitle(“Gui lalal einhorn”)
self.setWindowIcon(QIcon(“cookie.png”))
self.setAutoFillBackground(True)
self.setStyleSheet(“背景色:浅蓝色;”)
自行移动(500250)
self.show()
def Spilen(自我):
印刷品(“斯皮伦”)
def设置(自):
打印(“设置”)
def学分(自我):
打印(“学分”)
def gedruekt(自我):
打印(“Er hats getan;”(“”)
如果名称=“\uuuuu main\uuuuuuuu”:
app=QApplication(sys.argv)
w=窗口()
sys.exit(app.exec_())

是的,谢谢你。这是我第一次在Python编写程序,这就是我不太好的原因^^
class Label(QLabel):
    clicked = pyqtSignal()
    def __init__(self, parent=None):
        QLabel.__init__(self, parent=parent)

    def mousePressEvent(self, event):
        self.clicked.emit()

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.initMe()

    def initMe(self):

        label1 = QLabel(self)
        label1.setText("Überschrift mit namen des text adventure")
        label1.setStyleSheet("font-size: 18px;color: black;")
        label1.setGeometry(50, 50, 400, 100)
        label1.move(350,50)

        label2 = Label(self)
        label2.setText("Spielen")
        label2.setStyleSheet("font-size: 18px;color: black;")
        label2.setGeometry(50, 50, 400, 100)
        label2.move(450, 120)
        label2.clicked.connect(self.spielen)

        label3 = Label(self)
        label3.setText("Settings")
        label3.setStyleSheet("font-size: 18px;color: black;")
        label3.setGeometry(50, 50, 400, 100)
        label3.move(450, 200)
        label3.clicked.connect(self.settings)

        label4 = Label(self)
        label4.setText("Credits")
        label4.setStyleSheet("font-size: 18px;color: black;")
        label4.setGeometry(50, 50, 400, 100)
        label4.move(450, 280)
        label4.clicked.connect(self.credits)

        QToolTip.setFont(QFont("Arial", 10 ))
        button = QPushButton("Spiel beenden", self)
        button.setGeometry(50,50,150,50)
        button.setFont(QFont("Arial", 12))
        button.move(820, 420)
        button.setToolTip("<b>Button lel</b>")
        button.clicked.connect(self.close)
        button.clicked.connect(self.gedruekt)
        button.setStyleSheet("background-color: white;")

        self.setGeometry(50,50,1000,500)
        self.setWindowTitle("Gui lalal einhorn")
        self.setWindowIcon(QIcon("cookie.png"))
        self.setAutoFillBackground(True)
        self.setStyleSheet("background-color: lightblue;")
        self.move(500, 250)
        self.show()

    def spielen(self):
        print("spielen")

    def settings(self):
        print("settings")

    def credits(self):
        print("credits")

    def gedruekt(self):
        print("Er hats getan ;(")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Window()
    sys.exit(app.exec_())