2
Qt와 PySyde를 처음 사용합니다. 나는 sime 선 그림을 시각화하기 위해 작은 응용 프로그램을 만들려고합니다. QGraphicsView는 QGraphicsScene을 사용하려고 시도합니다. 나는 그것이 어떻게 작동 하는지를 배우기 위해 테스트를 만들었지 만 그렇지 않다. 나는 주위에 많이 봤다, 나는 그것이 작동하지 않는 이유를 이해하지 않습니다. 누군가가 나에게 이유를 설명하고 나에게 빛을 가져다 줄 수 있습니까?pyside QGraphicsScene : 왜 작동하지 않습니까?
내 코드 (단지 라인과 현장에 샘플 텍스트 넣을) :
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PySide import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
hbox=QtGui.QHBoxLayout()
leftpanel=QtGui.QFrame()
leftpanel.setGeometry(0,0,300,400)
scene=QtGui.QGraphicsScene()
scene.addText("Hello, world!")
view=QtGui.QGraphicsView(scene,leftpanel)
view.setSceneRect(0,0,300,400)
pen=QtGui.QPen(QtCore.Qt.black,2)
scene.addLine(0,0,200,200,pen)
hbox.addWidget(leftpanel)
rightpanel=QtGui.QFrame()
hbox.addWidget(rightpanel)
szoveg=QtGui.QLabel(rightpanel)
szoveg.setText(u"Hello World!")
self.setLayout(hbox)
self.resize(500,500)
self.setWindowTitle('blabla')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
감사하지만, 문제는 장면 중 하나를 표시하지 않는다는 것입니다 . 나는이 그래픽 뷰가 장면에 연결되어 있지 않다고 생각하지만,이 라인 뷰 = QtGui.QGraphicsView (scene, leftpanel)에서 장면과 부모를 constuctor에게 제공하기 때문에 그렇다. 여기 문서에서 가능하다고 말합니다 : http://www.pyside.org/docs/pyside/PySide/QtGui/QGraphicsScene.html#PySide.QtGui.QGraphicsScene – sipiatti
@sipiatti, 시도해 보셨습니까? 그것은 장면에 대한 참조가 저장 될 때 나를 위해 작동합니다. 수정 사항이있는 전체 코드 : http://pastebin.com/cBy2y8rq. 'initUI'가 반환 될 때 파이썬 가비지 컬렉터가 그것을 삭제하기 때문에 장면이 표시되지 않습니다. – reclosedev
흠, PyQt4에서 장면에 대한 참조를 저장하지 않고도 작동합니다. – reclosedev