2
QtとPySydeの新機能です。私はシム線の描画を視覚化するための小さなアプリケーションを作成しようとしています。 これを行うために、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(シーン、左パネル)ではシーンと親をコンストラクタに提供するので、そうすべきだ。 http://www.pyside.org/docs/pyside/PySide/QtGui/QGraphicsScene.html#PySide.QtGui.QGraphicsScene – sipiatti
@sipiatti、試しましたか?シーンへの参照が保存されるとき、私のために働きます。フィックスフルコード:http://pastebin.com/cBy2y8rqシーンが表示されないのは、 'initUI'が返ってきたときにPythonガベージコレクタがそれを削除するからです。 – reclosedev
Hm、PyQt4では、シーンへの参照を保存せずに動作します。 – reclosedev