PyQt5 GUI编程(QMainWindow与QWidget模块结合使用)
一.简介
QWidget是所有用户界面对象的基类,而QMainWindow用于创建主应用程序窗口的类。它是QWidget的一个子类,提供了创建具有菜单栏、工具栏、状态栏等的主窗口所需的功能。上篇主要介绍了基本使用,创建窗口时都是继承单个模块,本章主要介绍下两个模块的结合使用。
二.具体用法
1.我们先来创建一个类来继承QMainWindow实现一个简单的窗口
import sys from PyQt5.QtWidgets import QApplication, QMainWindow class FileChooserApp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI() def initUI(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.在主窗口中添加一个文本编辑器,使用垂直布局来分布展示
def initUI(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.具体效果

三.实例

import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFileDialog, QMainWindow, QAction, QTextEdit class FileChooserApp(QMainWindow):
def __init__(self):
super().__init__()
self.ql = QTextEdit()
self.initUI() def initUI(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) def ctrl_s(self):
print(self.ql.toPlainText())
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getSaveFileName(self, "保存文件", "C://", "Text Files (*.txt)", options=options)
if fileName:
with open(fileName, 'w', encoding='utf8') as file:
file.write(self.ql.toPlainText()) def text_del(self):
self.ql.clear() def openFileNameDialog(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)" 设置选择文件的类型
"""
if fileName:
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_())
上述中创建了两个菜单栏,分别是打开和编辑,内置功能是打开txt文件后读取内容显示在文本框中,文本框中内容可以进行清空和保存。

PyQt5 GUI编程(QMainWindow与QWidget模块结合使用)的更多相关文章
- Python gui编程pyQt5安装步骤t
Python gui编程pyQt5安装步骤 pip install PyQt5 Pip3 install PyQt5 https://riverbankco ...
- Python gui编程pyQt5安装步骤
Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic $FileName$ -o $FileNameWit ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!
[题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(35篇PyQT和200多篇Python)
[题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...
- 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)
初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...
- Python进阶--GUI编程
一.图形用户图面(GUI编程) 1. wxpython下载和安装: 下载url: http://wxpython.org/download.php 2.创建示例GUI应用程序 : ①开始需要导入wx ...
- 基于tkinter的GUI编程
tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl解释器实现的,它是Python标准库的一部分,所以使用它 ...
- python大法好——ython GUI编程(Tkinter)
Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...
- Python的GUI编程(TK)
TK在大多数 Unix平台.Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口.可实现Python的GUI编程. Tkinter模 ...
- GUI的最终选择Tkinter模块初级篇
一.Tkinter模块的基本使用 1)实例化窗口程序 import tkinter as tk app = tk.Tk() app.title("FishC Demo") app. ...
随机推荐
- 2021-09-15 JavaScript中强制将某个未知类型变量转成基础数据类型
为什么要强制将某个未知类型变量转成基础数据类型? 实际业务场景里,一个变量的数据是否合法或符合预期,会影响到自己的代码的可靠性.比如在别人使用自己写的自定义函数,而自己写的函数中的一些值是需要对入参严 ...
- 搜索引擎RAG召回效果评测MTEB介绍与使用入门
RAG 评测数据集建设尚处于初期阶段,缺乏针对特定领域和场景的专业数据集.市面上常见的 MS-Marco 和 BEIR 数据集覆盖范围有限,且在实际使用场景中效果可能与评测表现不符.目前最权威的检索榜 ...
- 腾讯云视频转码回调 http code 405
异常信息 405 Method Not Allowed 异常场景 通过腾讯云SDK上传视频,视频转码完成回调我的接口失败,我这边一直没有log.找到腾讯云工作人员,告诉我这边返回405错误和不支持ge ...
- 【Python OO其二】设计模式之工厂模式(举例说明)
工厂模式 工厂模式中的"工厂"实际上就是把类看成制造某种模板的工具(工厂),由这个类生成的实例除了本身自有的属性外,还可以通过指定的方式产出具有不同属性的同一类实例 比如:有一个面 ...
- 【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?
问题描述 当Windows发布新的安全漏洞后,会根据安全漏洞的级别分类来确定是紧急打补丁升级,还是每一月的补丁日( 每月第二周的星期二)来统一推送补丁. 比如最近的一个安全漏洞(9月13号发布) C ...
- 【Azure 应用服务】应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件
问题描述 应用服务中发布Docker Container,如何添加卷(如Azure File Share)以便永久存储文件 问题解答 App Service可以通过门户配置Mount Storage, ...
- 【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
问题描述 如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息 问题解答 由于直接获取到的虚拟机信息(Virtual Machines - Get)中,并不会包含虚拟机的 ...
- VSCode 配置 Spring Boot 项目开发环境
神器IDEA在升级到2023之后越发卡顿, EDU邮箱也不能用了, 照现在这个JDK版本的升级速度, 神器不升级也不行, 需要开始物色替代品. 其它IDE我用得少, VSCode还是比较熟悉的, 可以 ...
- 孔夫子旧书网书籍信息得爬取并保存为json,csv,excel多种文件格式
python版本:3.7 需要得引入得包: from selenium import webdriver from selenium.common.exceptions import TimeoutE ...
- [VueJsDev] 日志 - BBTime-LOG
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html BBTime-LOG ::: details 目录 目录 B ...