基于pyqt的QDockWidget样例

QDockWidget样例

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.lay = QHBoxLayout()
        self.text = QPlainTextEdit()
        self.lay.addWidget(self.text)
        self.setLayout(self.lay)


class DockDemo(QMainWindow):
    def __init__(self):
        super().__init__()
        self.width = self.size().width()    #   获取窗口宽度
        self.height = self.size().height()  #   获取窗口高度
        self.initUI()
    def initUI(self):
        dock1 = QDockWidget('one')        #   实例化6个dockwidget
        dock2 = QDockWidget('two')
        dock3 = QDockWidget('three')
        dock4 = QDockWidget('four')
        dock5 = QDockWidget('five')
        dock6 = QDockWidget('six')
        self.mywidget1 = MyWidget()         #   实例化6个窗体控件
        self.mywidget2 = MyWidget()
        self.mywidget3 = MyWidget()
        self.mywidget4 = MyWidget()
        self.mywidget5 = MyWidget()
        self.mywidget6 = MyWidget()

        dock1.setWidget(self.mywidget1)      #   设置dockwidget中的contents
        dock2.setWidget(self.mywidget2)
        dock3.setWidget(self.mywidget3)
        dock4.setWidget(self.mywidget4)
        dock5.setWidget(self.mywidget5)
        dock6.setWidget(self.mywidget6)

        self.addDockWidget(Qt.LeftDockWidgetArea, dock1)        #   添加一个dock
        self.splitDockWidget(dock1, dock2, Qt.Horizontal)       #   将dock1横向拆分成dock1和dock2
        self.splitDockWidget(dock2, dock3, Qt.Horizontal)
        self.splitDockWidget(dock1, dock4, Qt.Vertical)
        self.splitDockWidget(dock2, dock5, Qt.Vertical)
        self.splitDockWidget(dock3, dock6, Qt.Vertical)

        docklist = [dock1, dock2, dock3]
        dock1size = 0.6*self.width            #   设置dock1占窗口宽度的60%
        dock2size = 0.3*self.width
        dock3size = 0.1*self.width
        docksize = [int(dock1size), int(dock2size), int(dock3size)]

        self.resizeDocks(docklist, docksize, Qt.Horizontal)     #   调整每个dock所占的百分比


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = DockDemo()
    demo.showMaximized()
    sys.exit(app.exec_())

运行效果如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值