一.简介

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模块结合使用)的更多相关文章

  1. Python gui编程pyQt5安装步骤t

    Python gui编程pyQt5安装步骤         pip install PyQt5 Pip3 install PyQt5               https://riverbankco ...

  2. Python gui编程pyQt5安装步骤

    Python gui编程pyQt5安装步骤 =============================== -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWit ...

  3. 用 eric6 与 PyQt5 实现python的极速GUI编程(系列01)--Hello world!

    [题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...

  4. 用 eric6 与 PyQt5 实现python的极速GUI编程(35篇PyQT和200多篇Python)

    [题记] 我是一个菜鸟,这个系列是我的学习笔记. PyQt5 出来有一段时间了, PyQt5 较之 PyQt4 有一些变化,而网上流传的几乎都是 PyQt4 的教程,照搬的话大多会出错. eric6 ...

  5. 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

    初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...

  6. Python进阶--GUI编程

    一.图形用户图面(GUI编程) 1. wxpython下载和安装: 下载url: http://wxpython.org/download.php 2.创建示例GUI应用程序 : ①开始需要导入wx ...

  7. 基于tkinter的GUI编程

    tkinter:tkinter是绑定了Python的TKGUI工具集,就是Python包装的Tcl代码,通过内嵌在Python解释器内部的Tcl解释器实现的,它是Python标准库的一部分,所以使用它 ...

  8. python大法好——ython GUI编程(Tkinter)

    Python GUI编程(Tkinter) Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的 ...

  9. Python的GUI编程(TK)

    TK在大多数 Unix平台.Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口.可实现Python的GUI编程. Tkinter模 ...

  10. GUI的最终选择Tkinter模块初级篇

    一.Tkinter模块的基本使用 1)实例化窗口程序 import tkinter as tk app = tk.Tk() app.title("FishC Demo") app. ...

随机推荐

  1. SpringBoot整合EasyExcel实现Excel表格的导出功能

    前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教. 在后端管理系统的开发中,经常有导出当前表格数 ...

  2. TCP协议的流量控制和拥塞控制

    一开始,我总是容易把这2个概念搞混淆了,因此,为了加深理解,我写出来整理下思路. 一:流量控制 什么是流量控制,它涉及到哪些内容呢? 首先,我们看看一个最简单的tcp传输涉及到哪些东西 发送端,数据, ...

  3. pikachu php反序列化漏洞

    原理 php中serialize(),unserialize()这两个函数. 序列化serialize() 序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象: class S{ p ...

  4. 美团面试:说说OOM三大场景和解决方案? (绝对史上最全)

    首先,咱们先聊聊,什么是OOM? 小伙伴们,有没有遇到过程序突然崩溃,然后抛出一个OutOfMemoryError的异常?这就是我们俗称的OOM,也就是内存溢出.简单来说,就是你的Java应用想要的内 ...

  5. 搭建Windows环境下的多功能免费SSH客户端

    关于Windows下的SSH客户端工具,可以有许多选择,从开源免费到商业收费的,零零总总. 免费版: Putty就是最简单的SSH客户端,非常轻量级. Electerm是一个开源可免费使用的跨平台SS ...

  6. PMP考试之【PMBOK(第六版)49个过程及ITTO】

  7. Hibernate过滤器使用窍门

    本文向大家介绍Hibernate过滤器,可能好多人还不了解Hibernate过滤器,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西. Hibernate3新增了对某个类或者集合使用预先定 ...

  8. 私有git服务器搭建-gitlib版

    目录 环境 centos6.5 这里有官网安装地址教程: 这里有机器配置安装需求 CPU Memory 安装步骤 安装配置依赖项 添加GitLab仓库,并安装到服务器上 启动GitLab 配置 git ...

  9. MindSponge分子动力学模拟——使用MDAnalysis工具进行后分析(2024.02)

    技术背景 分子动力学模拟(Molecule Dynamics Simulation,MD),本质上是一门采样技术.通过配置力场参数.拓扑结构和积分器,对一个给定的体系不断的采样,最终得到一系列的轨迹. ...

  10. Java 可变个数形参的方法

    1 /** 2 * 3 * @Description 4 * @author Bytezero·zhenglei! Email:420498246@qq.com 5 * @version 6 * @d ...