gpt4 book ai didi

python - QGraphicsView 未在 QMainWindow 中显示

转载 作者:行者123 更新时间:2023-12-01 06:15:06 24 4
gpt4 key购买 nike

我不确定为什么这个应用程序不显示任何内容。我将用几行重现来提供问题的要点。使用PyQt4

class SomeScene(QtGui.QGraphicsScene):
def __init__(self, parent = None):
QtGui.QGraphicsScene.__init__(self, parent)

pixmap = QtGui.QPixmap('someImage') # path is DEFINITELY valid
item = QGraphicsPixmapItem(pixmap)
self.addItem(item)


class MainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)
... # code to set up window

scene = SomeScene()
view = QtGui.QGraphicsView(scene)

hbox = QtGui.QHBoxLayout()
hbox.addWidget(view)

mainWidget = QtGui.QWidget()
mainWidget.setLayout(hbox)

self.setCentralWidget(mainWidget)


app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())

这只会显示一个空格。

最佳答案

由于场景已被破坏, View 一片空白。如果场景未存储在成员变量中,则场景将被销毁。该 View 不拥有场景的所有权,因为一个场景可以有多个 View 。在下面的示例中,tmpScene 将被销毁(导致打印“tmpScene 已销毁”消息),但 self.scene 将在 View 中使用,并且将显示像素图项。

import sys
from PyQt4 import QtGui
import sip

class SomeScene(QtGui.QGraphicsScene):
def __init__(self, parent = None):
QtGui.QGraphicsScene.__init__(self, parent)

pixmap = QtGui.QPixmap('someImage')
item = QtGui.QGraphicsPixmapItem(pixmap)
self.addItem(item)


class MainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QMainWindow.__init__(self, parent)

# This scene will be destroyed because it is local.
tmpScene = SomeScene()
tmpScene.destroyed.connect(self.onSceneDestroyed)

self.scene = SomeScene()
view = QtGui.QGraphicsView(self.scene)

hbox = QtGui.QHBoxLayout()
hbox.addWidget(view)

mainWidget = QtGui.QWidget()
mainWidget.setLayout(hbox)

self.setCentralWidget(mainWidget)

def onSceneDestroyed(self, obj):
print 'tmpScene destroyed'

app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())

关于python - QGraphicsView 未在 QMainWindow 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com