Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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 更多使用PySide的码头位置?_Python_Qt_Pyside - Fatal编程技术网

Python 更多使用PySide的码头位置?

Python 更多使用PySide的码头位置?,python,qt,pyside,Python,Qt,Pyside,我喜欢dock类比,并且相信用户可能需要两个大的“中心”小部件以及顶部、底部和侧面小部件。我还喜欢dock小部件的标签,例如QDockWidget(“文件系统查看器”)。是否有一种简单的、当前的方法来添加更多的停靠位置,而不是一个单一的中心小部件?表明它曾经可用,但现在不推荐。如果没有,是否有方法标记中心小部件,使其看起来像码头?您链接到的答案已经提供了一个解决方案,即将QMainWindow设置为中心小部件。此中心小部件必须只有dock小部件,而没有自己的中心小部件 这种方法有一些局限性。首先

我喜欢dock类比,并且相信用户可能需要两个大的“中心”小部件以及顶部、底部和侧面小部件。我还喜欢dock小部件的标签,例如QDockWidget(“文件系统查看器”)。是否有一种简单的、当前的方法来添加更多的停靠位置,而不是一个单一的中心小部件?表明它曾经可用,但现在不推荐。如果没有,是否有方法标记中心小部件,使其看起来像码头?

您链接到的答案已经提供了一个解决方案,即将
QMainWindow
设置为中心小部件。此中心小部件必须只有dock小部件,而没有自己的中心小部件

这种方法有一些局限性。首先,中央停靠窗口小部件不能与外部停靠窗口小部件互换(反之亦然)。其次,如果关闭所有外部dock小部件,除非主窗口有一个菜单栏,否则将无法恢复它们。菜单栏自动提供用于还原dock小部件的上下文菜单。这与右键单击dock小部件标题栏时显示的菜单相同

下面是演示此方法的演示脚本:

import sys
from PySide import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.centre = QtGui.QMainWindow(self)
        self.centre.setWindowFlags(QtCore.Qt.Widget)
        self.centre.setDockOptions(
            QtGui.QMainWindow.AnimatedDocks |
            QtGui.QMainWindow.AllowNestedDocks)
        self.setCentralWidget(self.centre)
        self.dockCentre1 = QtGui.QDockWidget(self.centre)
        self.dockCentre1.setWindowTitle('Centre 1')
        self.centre.addDockWidget(
            QtCore.Qt.LeftDockWidgetArea, self.dockCentre1)
        self.dockCentre2 = QtGui.QDockWidget(self.centre)
        self.dockCentre2.setWindowTitle('Centre 2')
        self.centre.addDockWidget(
            QtCore.Qt.RightDockWidgetArea, self.dockCentre2)
        self.dockLeft = QtGui.QDockWidget(self)
        self.dockLeft.setWindowTitle('Left')
        self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockLeft)
        self.dockRight = QtGui.QDockWidget(self)
        self.dockRight.setWindowTitle('Right')
        self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockRight)
        self.menuBar().addMenu('File').addAction('Quit', self.close)

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.setGeometry(500, 50, 600, 400)
    window.show()
    sys.exit(app.exec_())

如果这仍然是最好的方法,我将使用它。你的代码工作得很好。非常感谢。