Python PyQT-将boxlayout添加到boxlayout

Python PyQT-将boxlayout添加到boxlayout,python,qt,pyqt,pyqt5,Python,Qt,Pyqt,Pyqt5,我想创建一个水平的BoxLayout,并将其放入一个垂直的BoxLayout中 我想出了以下不起作用的代码:我的窗口出现了,但BoxLayouts不在那里(至少不可见): 我如何才能做到这一点?您需要在布局中添加一些小部件,这样小部件本身就可以有另一个布局 import sys from PyQt4 import QtGui , QtCore class Viewer(QtGui.QMainWindow): def __init__(self, parent = None):

我想创建一个水平的BoxLayout,并将其放入一个垂直的BoxLayout中

我想出了以下不起作用的代码:我的窗口出现了,但BoxLayouts不在那里(至少不可见):


我如何才能做到这一点?

您需要在布局中添加一些小部件,这样小部件本身就可以有另一个布局

import sys
from PyQt4 import QtGui , QtCore

class Viewer(QtGui.QMainWindow):  
    def __init__(self, parent = None):
        super(Viewer, self).__init__(parent) 
        self.centralwidget = QtGui.QWidget(self)
        self.setCentralWidget(self.centralwidget)
        layout1 = QtGui.QHBoxLayout()
        self.centralwidget.setLayout(layout1)

        l = QtGui.QLabel()
        l.setPixmap(QtGui.QPixmap("folder.png"))
        text = QtGui.QTextEdit("Un fichier")

        element = QtGui.QWidget(self) 
        layout2 = QtGui.QVBoxLayout()
        element.setLayout(layout2)
        layout2.addWidget(l)
        layout2.addWidget(text)
        layout1.addWidget(element)

app = QtGui.QApplication(sys.argv)
viewer = Viewer()
viewer.show()
sys.exit(app.exec_())

对于我来说,我通常为内部布局分配另一个小部件,并且它可以工作

self.setTabText(0, "Folders")
layout1 = QHBoxLayout()
l = QLabel();
l.setPixmap(QPixmap("pics/file.png"))
text = QTextEdit("Un fichier")
element = QVBoxLayout()
#widget = QWidget()
#widget.setLayout(element)
element.addWidget(l)
element.addWidget(text)
#layout1.addWidget(widget)
self.tab1.setLayout(layout1)

以#开头的代码会被修改或添加。

我不在计算机旁,因此无法测试,但你不应该使用.addLayout()而不是.addChildWidget来添加布局吗?顺便说一下,我对PyQt也有点陌生,但是
addWidget
addChildWidget
之间有什么区别吗?我在谷歌上搜索了addChildWidget,但没有显示任何文档。
self.setTabText(0, "Folders")
layout1 = QHBoxLayout()
l = QLabel();
l.setPixmap(QPixmap("pics/file.png"))
text = QTextEdit("Un fichier")
element = QVBoxLayout()
#widget = QWidget()
#widget.setLayout(element)
element.addWidget(l)
element.addWidget(text)
#layout1.addWidget(widget)
self.tab1.setLayout(layout1)