gpt4 book ai didi

python - QLayout:尝试将 QLayout ""添加到 QWidget "",它已经有一个布局

转载 作者:IT老高 更新时间:2023-10-28 20:52:49 33 4
gpt4 key购买 nike

我想创建一些标签,我阅读了这个答案:How to add a tab in PySide

我使用答案中的代码并进行了一些更改。因为我的代码必须读取一些文件并从这些文件中获取我的选项卡的名称,所以我在我的代码中添加了一个 for 循环。这是我的代码。

from PySide import QtCore, QtGui
import sys
import dflash_controller as con

if __name__ == "__main__":
list = [['a', 3], ['b', 4], ['c', 5], ['d', 6]]
app = QtGui.QApplication(sys.argv)
wid = QtGui.QWidget()
grid = QtGui.QGridLayout(wid)
wid.setLayout(grid)

# setting the inner widget and layout
grid_inner = QtGui.QGridLayout(wid)
wid_inner = QtGui.QWidget(wid)
wid_inner.setLayout(grid_inner)

# add the inner widget to the outer layout
grid.addWidget(wid_inner)

# add tab frame to widget
wid_inner.tab = QtGui.QTabWidget(wid_inner)
grid_inner.addWidget(wid_inner.tab)

# create tab


for i, index in enumerate(list[0:]):
new_tab = QtGui.QWidget(wid_inner.tab)
grid_tab = QtGui.QGridLayout(new_tab)
grid_tab.setSpacing(10)
wid_inner.tab.addTab(new_tab, index[0])
new_tab.setLayout(grid_tab)


wid.show()
app.exec_()

它确实显示了我的标签。但是,我遇到了一个警告:QLayout: Attempting to add QLayout ""to QWidget "", which has a layout由于此选项卡代码只是整个代码的一部分,因此问题将阻塞数据流。而且我不知道它有什么问题。我搜索了答案,但其他答案不是用 python 编写的。

如果有人可以帮助我,在此先感谢。

最佳答案

当您通过将小部件传递给构造函数将其指定为 QLayout 的父级时,布局会自动设置为该小部件的布局。在您的代码中,您不仅要这样做,还要显式调用 setlayout()。当传递的小部件相同时,这没有问题。如果它们不同,您将收到错误消息,因为 Qt 尝试将第二个布局分配给您已经设置了布局的小部件。

您的问题在于以下几行:

grid_inner = QtGui.QGridLayout(wid)
wid_inner = QtGui.QWidget(wid)

在这里,您将 wid 设置为 grid_inner 的父级。 Qt 想将 grid_inner 设置为 wid 的布局,但 wid 已经有了上面设置的布局。将以上两行更改为此将解决您的问题。您可以删除对 setLayout() 的调用,因为它们是多余的。

wid_inner = QtGui.QWidget(wid)
grid_inner = QtGui.QGridLayout(wid_inner)

使用一种方法或另一种方法来设置布局以避免混淆。

将小部件指定为父级:

widget = QtGui.QWidget()
layout = QGridLayout(widget)

显式设置布局:

widget = QtGui.QWidget()
layout = QGridLayout()
widget.setLayout(layout)

关于python - QLayout:尝试将 QLayout ""添加到 QWidget "",它已经有一个布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25450598/

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