Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加多个停靠小部件_Python_Python 3.x_Pyqt_Qt5_Pyqt5 - Fatal编程技术网

Python 添加多个停靠小部件

Python 添加多个停靠小部件,python,python-3.x,pyqt,qt5,pyqt5,Python,Python 3.x,Pyqt,Qt5,Pyqt5,我尝试添加多个选项卡化QdockWidget,但不知何故,我只能同时停靠 mwe代码: from PyQt5.QtWidgets import * from PyQt5.QtCore import * class DockWindow(QDockWidget): def __init__(self, parent, name): super().__init__(parent) parent.addDockWidget(Qt.TopDockWidget

我尝试添加多个选项卡化QdockWidget,但不知何故,我只能同时停靠

mwe代码:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class DockWindow(QDockWidget):
    def __init__(self, parent, name):
        super().__init__(parent)

        parent.addDockWidget(Qt.TopDockWidgetArea, self)
        self.setWindowTitle(name)
        child = parent.findChildren(DockWindow)

        if len(child) > 1:
            parent.tabifyDockWidget(self, child[0])
            self.raise_()


app = QApplication(sys.argv)
main = QMainWindow()

for i in range(10):
    DockWindow(main, str(i))


main.show()
sys.exit(qApp.exec_())

根据:

void QMainWindow::tabifyDockWidget(QDockWidget*首先,QDockWidget* 第二)

将第二个dock小部件移动到第一个dock小部件的顶部,创建一个 主窗口中的选项卡式停靠区域

根据第一个参数得出的结论,必须是初始的
QDockWidget
,如果有
child[0]
,则第二个是新的
QDockWidget
,在您的情况下是
self
。通过改变以下方式解决问题:

parent.tabifyDockWidget(self, child[0])
致:

截图:


我犯了愚蠢的错误。谢谢你的澄清
parent.tabifyDockWidget(child[0], self)