-
不重写QDockWidget类
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QDockWidget, QPushButton, QApplication
class DockDemo(QMainWindow):
def __init__(self):
super().__init__()
self.docker1=QDockWidget('Docker1', self)
self.docker2=QDockWidget('Docker2', self)
self.textEdit=QTextEdit()
self.setCentralWidget(self.textEdit)
self.btn1=QPushButton('btn1')
self.btn2=QPushButton('btn2')
self.btn1.clicked.connect(self.btn1fun)
self.btn2.clicked.connect(self.btn2fun)
self.docker1.setWidget(self.btn1)
self.docker2.setWidget(self.btn2)
self.addDockWidget(Qt.RightDockWidgetArea,self.docker1)
self.addDockWidget(Qt.LeftDockWidgetArea, self.docker2)
self.setWindowTitle('Dock 例子')
self.resize(400, 300)
def btn1fun(self):
self.textEdit.setText('btn1')
self.docker2.setFloating(True)#开启悬浮状态
def btn2fun(self):
self.textEdit.setText('btn2')
self.docker1.setFloating(True)
if __name__ == '__main__':
app=QApplication(sys.argv)
demo=DockDemo()
demo.show()
sys.exit(app.exec_())
效果:
-
重写QDockWidget类
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QDockWidget, QPushButton, QApplication, QWidget, QVBoxLayout
class docker(QDockWidget):
def __init__(self, parent):
super().__init__(parent)
self.btn1 = QPushButton('btn1')
self.btn2 = QPushButton('btn2')
self.vbox = QVBoxLayout()
self.vbox.addWidget(self.btn1)
self.vbox.addWidget(self.btn2)
self.wgt = QWidget()
self.wgt.setLayout(self.vbox)
self.setWidget(self.wgt)
class DockDemo(QMainWindow):
def __init__(self):
super().__init__()
self.docker = docker(self)
self.textEdit = QTextEdit()
self.setCentralWidget(self.textEdit)
self.docker.btn1.clicked.connect(self.btn1fun)
self.docker.btn2.clicked.connect(self.btn2fun)
self.addDockWidget(Qt.RightDockWidgetArea, self.docker)
self.setWindowTitle('Dock 例子')
self.resize(400, 300)
def btn1fun(self):
self.textEdit.setText('btn1')
def btn2fun(self):
self.textEdit.setText('btn2')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = DockDemo()
demo.show()
sys.exit(app.exec_())
效果: