刚刚我看到了xmind软件,可以一个软件中打开多个子窗口,点x即可关闭,我就联想到了QMdiArea,和窗口类型组合。
QMdiArea加Qt.ToolTip试了一试,代码如下:
# coding=utf-8
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("xmind")
self.mdiArea=QMdiArea(self)
self.mdiArea.setViewMode(QMdiArea.TabbedView)
self.mdiArea.setTabShape(QTabWidget.Rounded)
self.mdiArea.setTabsClosable(True)
self.mdiArea.setTabsMovable(True)
self.mdiArea.setTabPosition(QTabWidget.North)
self.setCentralWidget(self.mdiArea)
self.menu=self.menuBar().addMenu("菜单")
self.actionAdd=self.menu.addAction("添加")
self.actionAdd.triggered.connect(self.addSubWidnow)
def addSubWidnow(self):
sub=self.mdiArea.addSubWindow(QWidget(self.mdiArea),Qt.ToolTip)
sub.show()
def start_test(name):
if __name__ == "__main__":
app = QApplication(sys.argv)
main = name()
main.show()
sys.exit(app.exec_())
start_test(MainWindow)
结果如下:
这和预期有点差距,我就再找有没有办法自定义tabWidget,tabText?查找官方文档无果,灵机一动,试试了更改子窗口标题,结果成了,代码如下:
# coding=utf-8
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class MainWindow(QMainWindow):
count=1
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("xmind")
self.mdiArea=QMdiArea(self)
self.mdiArea.setViewMode(QMdiArea.TabbedView)
self.mdiArea.setTabShape(QTabWidget.Rounded)
self.mdiArea.setTabsClosable(True)
self.mdiArea.setTabsMovable(True)
self.mdiArea.setTabPosition(QTabWidget.North)
self.setCentralWidget(self.mdiArea)
self.menu=self.menuBar().addMenu("菜单")
self.actionAdd=self.menu.addAction("添加")
self.actionAdd.triggered.connect(self.addSubWidnow)
def addSubWidnow(self):
sub=self.mdiArea.addSubWindow(QWidget(self.mdiArea),Qt.ToolTip)
sub.setWindowTitle(f"测试{MainWindow.count}")
sub.show()
MainWindow.count+=1
def start_test(name):
if __name__ == "__main__":
app = QApplication(sys.argv)
main = name()
main.show()
sys.exit(app.exec_())
start_test(MainWindow)
结果如下: