一.简介

QWidget是所有用户界面对象的基类,而QMainWindow
用于创建主应用程序窗口的类。它是
QWidget
的一个子类,提供了创建具有菜单栏、工具栏、状态栏等的主窗口所需的功能。上篇主要介绍了基本使用,创建窗口时都是继承单个模块,本章主要介绍下两个模块的结合使用。

二.具体用法

1.我们先来创建一个类来继承QMainWindow实现一个简单的窗口

importsysfrom PyQt5.QtWidgets importQApplication, QMainWindowclassFileChooserApp(QMainWindow):def __init__(self):
super().
__init__()
self.initUI()
definitUI(self):#设置窗口的标题和大小 self.setWindowTitle('文件选择器')
self.setGeometry(
300, 300, 500, 500)if __name__ == '__main__':
app
=QApplication(sys.argv)
ex
=FileChooserApp()
ex.show()
sys.exit(app.exec_())

2.在主窗口中添加一个文本编辑器,使用垂直布局来分布展示

    definitUI(self):
ql
=QTextEdit()
central_widget
=QWidget()
self.setCentralWidget(central_widget)
#创建一个中心部件 vbox = QVBoxLayout(central_widget) #创建一个垂直布局 vbox.addWidget(ql)
vbox.addStretch(
1)
central_widget.setLayout(vbox)
#添加到布局器中

上述中我们在主窗口中创建一个中心部件将实例化后的central_widget 添加进去,这样就可以设置我们想要的布局了。

3.具体效果

三.实例


importsysfrom PyQt5.QtWidgets importQApplication, QWidget, QVBoxLayout, QFileDialog, QMainWindow, QAction, QTextEditclassFileChooserApp(QMainWindow):def __init__(self):
super().
__init__()
self.ql
=QTextEdit()
self.initUI()
definitUI(self):
action
= QAction('打开', self) #创建QAction实例 action.setShortcut('Ctrl+a') #设置快捷键操 action.triggered.connect(self.openFileNameDialog)
menubar
= self.menuBar() #创建一个菜单栏 menu_open = menubar.addMenu('文件') #设置菜单栏tab menu_open.addAction(action) #关联事件 action_updata= QAction('删除', self) #创建QAction实例 action_updata.setShortcut('Ctrl+d') #设置快捷键操 action_updata.triggered.connect(self.text_del)

action_a
= QAction('保存', self) #创建QAction实例 action_a.triggered.connect(self.ctrl_s)

menubar_updata
= self.menuBar() #创建一个菜单栏 menu_updata = menubar_updata.addMenu('编辑') #设置菜单栏tab menu_updata.addAction(action_updata) #关联事件 menu_updata.addAction(action_a) #关联事件 central_widget=QWidget()
self.setCentralWidget(central_widget)
vbox
= QVBoxLayout(central_widget) #创建一个垂直布局 vbox.addWidget(self.ql)
vbox.addStretch(
1)
central_widget.setLayout(vbox)
#设置窗口的标题和大小 self.setWindowTitle('文件选择器')
self.setGeometry(
300, 300, 500, 500)defctrl_s(self):print(self.ql.toPlainText())
options
=QFileDialog.Options()
options
|=QFileDialog.DontUseNativeDialog
fileName, _
= QFileDialog.getSaveFileName(self, "保存文件", "C://", "Text Files (*.txt)", options=options)iffileName:
with open(fileName,
'w', encoding='utf8') as file:
file.write(self.ql.toPlainText())
deftext_del(self):
self.ql.clear()
defopenFileNameDialog(self):#打开文件对话框并获取文件路径 options = QFileDialog.Options() #初始化 options |= QFileDialog.DontUseNativeDialog #使用pyqt对话框 fileName, _ = QFileDialog.getOpenFileName(self, "对话框标题", "C://","All Files (*);;Text Files (*.txt);;Text Files (*.py)",
options
=options) #打开一个对话框 """C://设置打开的目录,”“模式当前py目录
"All Files (*);;Text Files (*.txt);;Text Files (*.py)" 设置选择文件的类型
""" iffileName:
with open(fileName, mode
="r", encoding="utf8") as f:
self.ql.setText(f.read())
if __name__ == '__main__':
app
=QApplication(sys.argv)
ex
=FileChooserApp()
ex.show()
sys.exit(app.exec_())

View Code

上述中创建了两个菜单栏,分别是打开和编辑,内置功能是打开txt文件后读取内容显示在文本框中,文本框中内容可以进行清空和保存。

标签: none

添加新评论