python GUI库图形界面开发之PyQt5 MDI(多文档窗口)Q

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多文档窗口的应用。了解了这些,我们将可以更加高效地进行图形界面开发。

后端开发标签