对于Python项目,我必须使用画家在已经由图片填充的Qlabel小部件上绘制图像。我的问题是我的图像系统地在我的标签后面绘制。我通过这段代码简化了问题,我的目标是将“cigale1.png”绘制到标签上的“arrierplan.png”中:
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from test_ihm_main import *
class MonAppli(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.Label.setPixmap(QtGui.QPixmap("arrierplan.png"))
self.paintEvent(self.ui.Label)
def paintEvent(self,e):
qp = QtGui.QPainter(self)
qp.begin(self)
qp.drawPixmap(450,50,QtGui.QPixmap("cigale1.png"))
qp.end()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MonAppli()
window.show()
app.exec_()
这是我的Ui_MainWindow课程:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.Quitter = QtWidgets.QPushButton(self.centralwidget)
self.Quitter.setGeometry(QtCore.QRect(670, 520, 113, 32))
self.Quitter.setObjectName("Quitter")
self.Label = QtWidgets.QLabel(self.centralwidget)
self.Label.setGeometry(QtCore.QRect(400, 30, 361, 231))
self.Label.setText("")
self.Label.setObjectName("Label")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.Quitter.clicked.connect(MainWindow.close)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.Quitter.setText(_translate("MainWindow", "Quitter"))
我已经阅读了很多文档,阅读了很多主题,但没有任何效果......
先谢谢,
T.C
答案 0 :(得分:2)
出现问题的原因是SELECT [COLUMNLIST 1:1 RENAMED] FROM (your view)
高于WITH
,当您应用此功能时,会在其上绘制,因此不会显示。
应该在QLabel中覆盖paintEvent函数,为此我们将创建一个继承自Qlabel的类,名为Label。
QLabel
为了能够使用它,将其添加到Ui_MainWindow类的文件中,您必须更改:
QMainWindow
到
class Label(QtWidgets.QLabel):
def __init__(self, parent=None):
super(Label, self).__init__(parent=parent)
def paintEvent(self, e):
super().paintEvent(e)
qp = QtGui.QPainter(self)
qp.drawPixmap(100,100,QtGui.QPixmap("cigale1.png"))
<强>结果:强>
<强> arrierplan.png 强>
<强> cigale1.png 强>
<强>输出强>