我对 Python 非常陌生,甚至对 PyQt 也很陌生。我设法创建了一个表格,但想在某些单元格中添加图像。我读过我需要继承 QTableWidget 类,或者可能是 QTableWidgetItem 类并重新实现 QPaintEvent。如果有人有重新实现 QPaintEvent 的示例,我将不胜感激。
谢谢,斯蒂芬
我对 Python 非常陌生,甚至对 PyQt 也很陌生。我设法创建了一个表格,但想在某些单元格中添加图像。我读过我需要继承 QTableWidget 类,或者可能是 QTableWidgetItem 类并重新实现 QPaintEvent。如果有人有重新实现 QPaintEvent 的示例,我将不胜感激。
谢谢,斯蒂芬
from PyQt4 import QtGui
import sys
imagePath = "enter the path to your image here"
class ImgWidget1(QtGui.QLabel):
def __init__(self, parent=None):
super(ImgWidget1, self).__init__(parent)
pic = QtGui.QPixmap(imagePath)
self.setPixmap(pic)
class ImgWidget2(QtGui.QWidget):
def __init__(self, parent=None):
super(ImgWidget2, self).__init__(parent)
self.pic = QtGui.QPixmap(imagePath)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.drawPixmap(0, 0, self.pic)
class Widget(QtGui.QWidget):
def __init__(self):
super(Widget, self).__init__()
tableWidget = QtGui.QTableWidget(10, 2, self)
tableWidget.setCellWidget(0, 1, ImgWidget1(self))
tableWidget.setCellWidget(1, 1, ImgWidget2(self))
if __name__ == "__main__":
app = QtGui.QApplication([])
wnd = Widget()
wnd.show()
sys.exit(app.exec_())
有两种方法,因为您要求使用 painEvent。
学分:http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg01259.html
希望这可以帮助。
编辑:使用 QTableWidget 子类添加了请求的解决方案。
from PyQt4 import QtGui
import sys
class ImageWidget(QtGui.QWidget):
def __init__(self, imagePath, parent):
super(ImageWidget, self).__init__(parent)
self.picture = QtGui.QPixmap(imagePath)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.drawPixmap(0, 0, self.picture)
class TableWidget(QtGui.QTableWidget):
def setImage(self, row, col, imagePath):
image = ImageWidget(imagePath, self)
self.setCellWidget(row, col, image)
if __name__ == "__main__":
app = QtGui.QApplication([])
tableWidget = TableWidget(10, 2)
tableWidget.setImage(0, 1, "<your image path here>")
tableWidget.show()
sys.exit(app.exec_())
我发现这个解决方案对我的初学者很友好:
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
class KindForMind(object):
def THINK(self, PLEASE):
self.table = QtWidgets.QTableWidget()
pic = QtGui.QPixmap("your_image.jpg")
self.label = QtWidgets.QLabel(PLEASE)
self.label.setPixmap(pic)
self.table.setCellWidget(0,0, self.label)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
PLEASE = QtWidgets.QWidget()
ui = KindForMind()
ui.THINK(PLEASE)
PLEASE.show()
sys.exit(app.exec_())