1. PyQt5介绍
PyQt5是Python下的一个GUI库,它基于Qt库开发,使得Python开发者可以方便快捷地开发跨平台的GUI应用程序。该库提供了一系列WIDGETS(小部件)和LAYOUTS(布局)来创建窗口应用程序,并且支持与数据库的交互以及网络编程。
PyQt5是开源的,并且有着非常完整的文档和示例,能够帮助我们更快更简单的入门。
2. MDI的介绍
多文档界面(MDI)是一种从操作系统的角度说明的图形用户界面(GUI)的术语。它的意思是:在一个主窗口中有多个文档界面。
3. PyQt5 MDI的实现
3.1 实现界面
我们需要创建一个主窗口和多个子窗口,在主窗口中使用QMenuBar和QToolBar分别来实现菜单和工具条,具体代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QAction, QMdiArea, QMdiSubWindow
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.mdi = QMdiArea()
self.setCentralWidget(self.mdi)
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("New")
file.addAction("cascade")
file.addAction("Tiled")
file.triggered.connect(self.windowaction)
def windowaction(self, q):
if q.text() == "New":
sub = QMdiSubWindow()
sub.setWidget(QTextEdit())
self.mdi.addSubWindow(sub)
sub.show()
if q.text() == "cascade":
self.mdi.cascadeSubWindows()
if q.text() == "Tiled":
self.mdi.tileSubWindows()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
运行代码后,我们可以看到一个空白的主窗口,里面没有任何东西。当我们单击菜单“File”下的“New”时,就可以新建一个子窗口,它里面有一个QTextEdit窗口部件。同时,我们还可以通过菜单栏的“Window”选项对多个子窗口进行排列。
3.2 新增多个菜单项
在原有代码的基础上,我们可以增加更多的菜单项操作,如“Open”、“Save”、“Undo”等操作,代码片段如下所示:
file = bar.addMenu("File")
file.addAction("New")
file.addAction("Open")
file.addAction("Save")
file.addAction("cascade")
file.addAction("Tiled")
edit = bar.addMenu("Edit")
edit.addAction("Undo")
edit.addAction("Redo")
window = bar.addMenu("Window")
window.addAction("Minimize")
window.addAction("Maximize")
window.addAction("Close")
help = bar.addMenu("Help")
help.addAction("About")
当我们运行代码并单击菜单“Edit”下的“Undo”按钮,就可以撤销之前的操作。在菜单栏中,依次展开选项“Window”->“Minimize”,就可以将当前选中的子窗口最小化。
3.3 设置快捷键操作
我们可以为每个菜单项设置快捷键,如为文件“Save”设置快捷键为Ctrl+S,代码片段如下:
file = bar.addMenu("File")
file.addAction("New")
file.addAction("Open")
file.addAction("Save").setShortcut("Ctrl+S")
file.addAction("cascade")
file.addAction("Tiled")
edit = bar.addMenu("Edit")
edit.addAction("Undo").setShortcut("Ctrl+Z")
edit.addAction("Redo").setShortcut("Ctrl+Y")
当我们按下Ctrl+S时,就会执行保存操作。当我们按下Ctrl+Z时,就会撤销之前的操作。同样的,我们可以为其他的菜单项设置快捷键。
4. 总结
通过对PyQt5 MDI的实现,能够让我们更好的了解PyQt5 GUI库的使用和MDI多文档窗口的应用。了解了这些,我们将可以更加高效地进行图形界面开发。