如何用鼠标动态调整QHBoxLayout和QGraphicsView大小?(Python,Pyqt4)

2024-06-16 10:47:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力寻找解决问题的办法。 我试图修改分配给一个窗口中两个graphicsene的空间。 准确地说。我有一个QHBoxLayout,我放了两个qgraphicsview来在其中绘制一些东西。这两个场景并排(垂直)放置。我想做的是用鼠标点击两个场景之间的空间来调整每个视图的空间。如果我向上移动鼠标,那么顶部的场景会获得较小的高度,而底部的场景会获得更大的高度。在

现在我有了以下代码:

# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

from PyQt4 import QtGui
import sys

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

        # General Window
        self.centralWidget = QtGui.QWidget()
        self.setCentralWidget(self.centralWidget)
        self.mainHBOX_param_scene = QtGui.QHBoxLayout()
        # list group view side
        self.plotview = QtGui.QGroupBox("Group of views")
        self.layout_plotview = QtGui.QVBoxLayout()
        # views 
        self.mascenegrid = QtGui.QGraphicsView(self) 
        self.mascenelfp = QtGui.QGraphicsView(self)
        # add widjets
        self.layout_plotview.addWidget(self.mascenegrid)
        self.layout_plotview.addWidget(self.mascenelfp)
        # set layout 
        self.plotview.setLayout(self.layout_plotview)
        self.mainHBOX_param_scene.addWidget(self.plotview)
        self.centralWidget.setLayout(self.mainHBOX_param_scene)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = SurfViewer(app) 
    ex.show()
    sys.exit(app.exec_())

所以我得到了这个结果。在

code result

我想做的是点击并拖动中间的灰色条,根据哪个视图需要更多的空间。 如果有人能解决这个问题,那就太好了。 祝您有个美好的一天!在


Tags: fromimportselfparamsys场景空间future
1条回答
网友
1楼 · 发布于 2024-06-16 10:47:58

使用QSplitter

    # add widgets
    self.splitter = QtGui.QSplitter(QtCore.Qt.Vertical)
    self.splitter.addWidget(self.mascenegrid)
    self.splitter.addWidget(self.mascenelfp)
    self.layout_plotview.addWidget(self.splitter)

相关问题 更多 >