【发布时间】:2018-01-16 10:55:00
【问题描述】:
我有一个用 QPixmap 填充的 Qlabel,我想在单击此标签后启动一个进程/功能。我扩展了 QLabel 类如下:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class QLabel_alterada(QLabel):
clicked=pyqtSignal()
def __init(self, parent):
QLabel.__init__(self, QMouseEvent)
def mousePressEvent(self, ev):
self.clicked.emit()
然后,在我的基于 pyuic5 的 .py 文件中(我使用 QtDesigner 进行布局),在导入保存扩展 QLabel 类的模块后,在自动生成的 setupui 函数中,我更改了我的标签
self.label1=QtWidgets.QLabel(self.centralwidget)
到
self.label1 = QLABEL2.QLabel_alterada(self.centralwidget)
最后,在我添加的应用程序功能所需的所有过程/类放在核心应用程序 Python 文件中
self.ui.label1.clicked.connect(self.dosomestuff)
应用程序没有崩溃,但标签仍然不可点击。有人可以帮我解决这个问题吗?
【问题讨论】:
-
我已经发布了一个答案,但如果还不够,您可以提供 QtDesigner 生成的代码,您可以在其中进行修改。
-
tks @eyllanesc。它仍然无法点击。我在 QtDesigner 生成的代码中所做的独特更改是关于我想要转换为“可点击”的 Qlabel 对象。我在我的帖子中提到了这个变化。您认为它可以作为 QLabel_alterada 类的参数与“self.centralWidget”相关吗?
-
是的,你可以做到,我认为错误在别处,所以我问你QtDesigner生成的代码与你所做的更改。
-
你可以显示你使用的文件夹结构。
-
@eyllanesc 我有一个独特的文件夹,其中包含带有由 pyuic 生成的代码的 .py 文件和包含核心应用程序的文件。此文件夹还包含我保存 QLabel 扩展类的文件。来自 QtDesigner 的代码非常庞大,包含所有 setobjectnames、addwidgets、addlayouts 和 qtdesigner+pyuic 自动处理的类似内容
标签: python pyqt click pyqt5 qlabel