我尝试添加多个选项卡式 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_())
最佳答案
根据docs :
void QMainWindow::tabifyDockWidget(QDockWidget * first, QDockWidget * second)
Moves second dock widget on top of first dock widget, creating a tabbed docked area in the main window.
从第一个参数得出的结论必须是初始的QDockWidget
,如果有child[0]
,第二个是新的QDockWidget
,在你的情况下self
。通过更改即可解决问题:
parent.tabifyDockWidget(self, child[0])
至:
parent.tabifyDockWidget(child[0], self)
屏幕截图:
关于python - 添加多个停靠的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45765653/