gpt4 book ai didi

python - QGraphicsScene 忽略网格布局的延伸

转载 作者:行者123 更新时间:2023-12-01 01:18:47 27 4
gpt4 key购买 nike

我有一个小部件,它分为两个子小部件。一个显示图片,另一个提供编辑图片的选项。图片子部件的水平空间应是编辑子部件的 5 倍。我在网格布局中指定此约束。但是,一旦我将 QGraphicsScene(和 View )添加到编辑子小部件,该约束就会被忽略。

我尝试了几种尺寸策略,但没有一个达到我想要的效果,但我对使用这些策略没有太多经验。

class MapWidget(QWidget):
""" Widget that renders the map and displays properties """
def __init__(self, main_gui, parent=None):
super().__init__(parent=parent)
self.main_gui = main_gui

# (Re-)Build the ui
self.layout = QGridLayout()
self.setLayout(self.layout)

self.map_scene = QGraphicsScene()
self.map_scene_view = QGraphicsView()
self.map_scene_view.setViewport(QGLWidget())
self.map_scene_view.setScene(self.map_scene)
self.layout.addWidget(self.map_scene_view, 1, 1, 5, 1)

blocks_container = QVBoxLayout()
self.layout.addLayout(blocks_container, 1, 2, 1, 1)

"""
Here I add other widgets to the blocks_container,
however none of those causes problems
"""

# As soon as I also add this group, both widgets have the same size
group_blocks = QGroupBox('Blocks')
self.blocks_scene = QGraphicsScene()
self.blocks_scene_view = QGraphicsView()
self.blocks_scene_view.setViewport(QGLWidget())
self.blocks_scene_view.setScene(self.blocks_scene)
group_blocks_layout = QHBoxLayout()
group_blocks.setLayout(group_blocks_layout)
group_blocks_layout.addWidget(self.blocks_scene_view)
blocks_container.addWidget(group_blocks)

两个小部件的比例不是 5/6 和 1/6,而是共享相同的大小,这使得图片看起来很小,而编辑小部件太大。另外,一旦我删除“group_blocks”小部件,编辑子小部件就会再次具有正确的大小。因此,为了简单起见,我排除了它包含的所有其他小部件。

最佳答案

尝试并根据需要进行调整:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtOpenGL import *

class MapWidget(QWidget):
""" Widget that renders the map and displays properties """

def __init__(self, main_gui="???", parent=None): # main_gui="???"
super().__init__(parent=parent)
self.main_gui = main_gui

# (Re-)Build the ui
self.layout = QGridLayout()
self.setLayout(self.layout)

self.map_scene = QGraphicsScene()
self.map_scene_view = QGraphicsView()
self.map_scene_view.setViewport(QGLWidget())
self.map_scene_view.setScene(self.map_scene)

# self.layout.addWidget(self.map_scene_view, 1, 1, 5, 1)
self.layout.addWidget(self.map_scene_view, 1, 1, 5, 5)

blocks_container = QVBoxLayout()

# self.layout.addLayout(blocks_container, 1, 2, 1, 1)
self.layout.addLayout(blocks_container, 1, 6, 5, 1)

self.layout.setColumnMinimumWidth(1, 320) # +++
self.layout.setRowMinimumHeight(1, 200) # +++
self.layout.setColumnStretch(1, 5) # +++
self.layout.setColumnStretch(6, 1) # +++

"""
Here I add other widgets to the blocks_container,
however none of those causes problems
"""

# As soon as I also add this group, both widgets have the same size
group_blocks = QGroupBox('Blocks')
self.blocks_scene = QGraphicsScene()
self.blocks_scene_view = QGraphicsView()
self.blocks_scene_view.setViewport(QGLWidget())
self.blocks_scene_view.setScene(self.blocks_scene)
group_blocks_layout = QHBoxLayout()
group_blocks.setLayout(group_blocks_layout)
group_blocks_layout.addWidget(self.blocks_scene_view)
blocks_container.addWidget(group_blocks)


if __name__=="__main__":
app = QApplication(sys.argv)
myapp = MapWidget()
myapp.show()
sys.exit(app.exec_())

enter image description here

关于python - QGraphicsScene 忽略网格布局的延伸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54051549/

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