python - 使用 PySide 的更多停靠位置?

标签 python qt pyside

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

最佳答案

您链接到的答案已经提供了一个解决方案,即将 QMainWindow 设置为中央小部件。这个中央小部件必须只有停靠小部件,并且没有自己的中央小部件。

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

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

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_())

关于python - 使用 PySide 的更多停靠位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46380037/

相关文章:

Python shift() 来自同一列,如 Excel 中的日期

并行的 Python 子进程

python - 为什么 tempfile 和 os.chdir() 会抛出 RecursionError?

python - OS X + Qt : How to capture all key-press events in the entire GUI?

html - 如何在 Qt 中用单个表格填充 QTextBrowser?

python - 如何设置 django ModelFormset 小部件?

c++ - 不同来源的QT调用函数

c++ - 如何通过信号和槽发送数据?

c++ - qmake转cmake链接错误

qt - QGLWidget 不会在滚动时移动其内容