gpt4 book ai didi

python - 用新的布局替换 QScrollArea 的布局

转载 作者:行者123 更新时间:2023-12-01 04:03:13 25 4
gpt4 key购买 nike

我编写了一个使用 PyQt 构建 GUI 的程序。在 Qt Designer 中,我有一个 MainWindow、其中的 QTabWidget 以及 QTabWidget 中的 QScrollArea。我正在尝试使用匹配数据动态构建匹配列表,将每个匹配添加到小部件的布局中,并将此布局放入 QScrollArea 中。目前,我的代码完美地做到了这一点,只是它引发了以下错误:

QLayout: Attempting to add QLayout "" to MainWindow "MainWindow", which already has a layout

这对我来说很有意义,但我不知道如何解决它。我什至不确定我所拥有的东西是如何发挥作用的,这使得修复起来更加困难。

在 MainWindow __init__() 方法中,我创建了 MatchHistoryBuilder 类的实例(用于构建每个匹配),调用 buildMatchHistory() 方法(位于 MainWindow 类中),然后向其传递 MatchHistoryBuilder 的实例,如下所示:

matchHistoryBuilder = MatchHistoryBuilder(self)
self.buildMatchHistory(matchHistoryBuilder)

这是我的 buildMatchHistory 方法:

def buildMatchHistory(self, matchHistoryBuilder):
# This method takes whatever matches are in match_history.txt, calls MatchHistoryBuilder.buildMatch() on each,
# and builds the GUI objects for the match history into the matchHistoryScrollArea.
# Globals: self.mainWindow

# Open match_history.txt and read json data into matchHistoryData
fileLocation = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
fileLocation = fileLocation + '\match_history.txt'
with open(fileLocation, 'r') as f:
matchHistoryData = json.load(f)
matchHistoryData = matchHistoryData["matches"]

# Scroll Area Properties
matchHistory = self.ui.matchHistoryScrollArea
matchHistory.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
matchHistory.setWidgetResizable(True)

# Container Widget
widget = QWidget()
# Layout of Container Widget
layout = QVBoxLayout(self)
for matchIndex, matchInstance in enumerate(matchHistoryData):
matchId = matchInstance["matchId"]
match = matchHistoryBuilder.buildMatch(summonerId, matchIndex, matchId)
layout.addWidget(match)
widget.setLayout(layout)

matchHistory.setWidget(widget)

MatchHistoryBuilder.buildMatch() 正确返回 QGroupBox。

如何使此方法正确构建每个匹配对象,将它们添加到 QVBoxLayout,并将该 QVBoxLayout 添加到我的 QScrollArea?

最佳答案

创建QVBoxLayout时,不要将其self(MainWindow)作为父级

layout = QVBoxLayout()

将父级传递给 QLayout 将自动使其成为该小部件的顶级布局。

关于python - 用新的布局替换 QScrollArea 的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36137844/

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