首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGraphicsScene在QMainWindow上

QGraphicsScene在QMainWindow上
EN

Stack Overflow用户
提问于 2015-06-16 13:41:50
回答 2查看 2K关注 0票数 0

Python仍然是新的,所以我正在尝试让QGraphicsScene在一个QMainWindow中。现在,我编写它的方式是两个窗口将出现,但我只希望一个窗口与QGraphicsScene“在”QMainWindow中出现。这是我的代码:

代码语言:javascript
复制
import sys
from PyQt4 import QtGui, QtCore

class MyView(QtGui.QGraphicsView):
    def __init__(self):
        QtGui.QGraphicsView.__init__(self)

        self.scene = QtGui.QGraphicsScene(self)
        self.item = QtGui.QGraphicsRectItem(300,400,100,100)
        self.scene.addItem(self.item)
        self.setScene(self.scene)

class Window(QtGui.QMainWindow):
    def __init__(self):
        #This initializes the main window or form
        super(Window,self).__init__()
        self.setGeometry(50,50,900,700)
        self.setWindowTitle("Pre-Alignment system")

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    view = MyView()
    view.show()
    sys.exit(app.exec_())

run()

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-16 14:13:37

Qt (和其他GUI工具包)相信为人父母。在另一个窗口或小部件中有一个窗口或小部件,设置其父窗口或小部件。请注意,您应该在外部调用show。

代码语言:javascript
复制
import sys
from PyQt4 import QtGui, QtCore

class MyView(QtGui.QGraphicsView):
    def __init__(self, parent=None):
        QtGui.QGraphicsView.__init__(self, parent=parent)

        self.scene = QtGui.QGraphicsScene(self)
        self.item = QtGui.QGraphicsRectItem(300,400,100,100)
        self.scene.addItem(self.item)
        self.setScene(self.scene)

class Window(QtGui.QMainWindow):
    def __init__(self, parent=None):
        #This initializes the main window or form
        super(Window,self).__init__(parent=parent)
        self.setGeometry(50,50,900,700)
        self.setWindowTitle("Pre-Alignment system")

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    view = MyView(GUI)
    GUI.show()
    sys.exit(app.exec_())

run()
票数 1
EN

Stack Overflow用户

发布于 2015-06-16 13:58:24

您必须在您的QGraphicsScene中创建QMainWindow (就像您希望它出现一样)。

然后,在总体上,您只创建一个Window实例并显示它。

代码语言:javascript
复制
class Window(QtGui.QMainWindow):
    def __init__(self):
        #This initializes the main window or form
        super(Window,self).__init__()
        self.setGeometry(50,50,900,700)
        self.setWindowTitle("Pre-Alignment system")
        #create the view
        self.view=MyView()
        self.setCentralWidget(self.view)

if __name__=='__main__':
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    GUI.show()
    sys.exit(app.exec_())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30869359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档