Python 如何将PQT5事件添加到标签
我的问题是,我想在标签上分别添加一个事件mousePressEvent,但是在这个文本下它不起作用,因为我的一些代码不起作用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
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_())