我正在研究如何将地图图像设置为QGraphicsRectItem
对象中的QGraphicsScene
对象,我在PyQT5中得到了一个干净的崩溃。你知道吗
代码是:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import smopy
from PIL.ImageQt import ImageQt
class MapWidget(QGraphicsRectItem):
def __init__(self, parent=None):
super(MapWidget, self).__init__(parent)
self.setRect(0.0, 0.0, 800, 600)
self.setFlags(self.ItemIsSelectable | self.ItemIsMovable)
self.image = None
# get map
map = smopy.Map((42., -1., 53., 3.), z=11, tilesize=48)
img = ImageQt(map.img)
self.image = QPixmap.fromImage(img)
def paint(self, painter, option, widget=None):
painter.drawPixmap(QPoint(0, 0), self.image)
class Window(QDialog):
def __init__(self):
super(Window, self).__init__()
self.layout = QVBoxLayout(self)
self.view = QGraphicsView()
self.scene = QGraphicsScene()
self.view.setScene(self.scene)
self.layout.addWidget(self.view)
self.map = MapWidget()
self.scene.addItem(self.map)
self.resize(1200, 800)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
输出消息为:
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
它可以转换成
numpy
并加载到QImage
,而不是转换成PIL
。另一方面,最好使用QGraphicsPixmapItem
,因为它可以正确地重新绘制。你知道吗相关问题 更多 >
编程相关推荐