python - mousePressEvent 对 QLabel 不起作用
问题描述
我阅读了很多关于如何在 QLabel 中获取图像上单击位置坐标的教程(Qt Creator 在“form.ui”中定义的以下代码中的“label_2”)。其中大多数是指使用mousePressEvent方法。但是,执行该方法后,当我单击导入图像上的某个点时,它不起作用。似乎mousePressEvent从来没有被任何东西调用过。想知道它出了什么问题。是否遗漏了任何琐碎或非琐碎的事情?
import sys
import os
from PySide2.QtWidgets import QApplication, QWidget
from PySide2.QtCore import QFile, Qt
from PySide2.QtUiTools import QUiLoader
from PySide2.QtGui import QPixmap
class qttest(QWidget):
def __init__(self):
super(qttest, self).__init__()
self.load_ui()
self.showImage()
def load_ui(self):
loader = QUiLoader()
path = os.path.join(os.path.dirname(__file__), "form.ui")
ui_file = QFile(path)
ui_file.open(QFile.ReadOnly)
self.ui = loader.load(ui_file, self)
ui_file.close()
def showImage(self,file='img.jpg'):
pixmap = QPixmap(file)
pixmap1 = pixmap.scaled(200, 200, Qt.KeepAspectRatio)
self.ui.label_2.setPixmap(pixmap1)
self.ui.label_2.mousePressEvent = self.getPos
def getPos(self,event):
x = event.pos().x()
y = event.pos().y()
print(x,y)
if __name__ == "__main__":
app = QApplication([])
widget = qttest()
widget.show()
sys.exit(app.exec_())
解决方案
自己解决了问题。self.ui = loader.load(ui_file, self)
在代码中不是将“form.ui”中的所有项目都考虑在内的推荐方式。通过使用uic
从 PyQt5 包中导入,可以解决这个问题。
推荐阅读
- c# - Html Agility Pack - 替换两条评论之间的 HTML
- sql-server - 从子查询 SQL 中获取多行
- java - 如何在 Apache Camel 中将空格设置为常量?
- kendo-ui - 在 kendo UI 中获取模型字段值的语法
- node.js - 如何在strapi中使用其他数据库连接?
- unity3d - 跟随移动 SpriteRenderer 的光点,而它应该保持静态
- twig - 用树枝表达评论
- java - 防止应用程序在奖励广告完成时崩溃 - Google Admob
- java - 用 Java 理解我的 Gson Parser 代码
- ajax - 重定向依赖于使用反应的ajax结果