一.简介

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. mac上安装vue

    安装node.js brew install nodejs node -v #查看版本 给nodejs模块安装目录设置访问权限 sudo chmod -R 777 /usr/local/lib/nod ...

  2. 关于“非法的前向引用(illegal forward reference)”的探究

    1.问题: 有如下代码: public class Test { static { i = 0;// 给变量赋值可以正常编译通过 System.out.print(i);// 编译器会提示" ...

  3. 用Docker发布网站时,自动下载Directory.Build.props及其Import的文件

    为Blazor网站项目,"添加Docker支持" 这时,网站项目根目录下会新增Dockerfile. 里面文字内容如下 #See https://aka.ms/customizec ...

  4. Linux的这些命令你需要掌握

    查看进程: 查看所有进程:ps -ef 查看指定的进程: ps -ef|grep pid(进程号) 查看前40个内存占用的进程: ps auxw|head -1;ps auxw|sort -rn -k ...

  5. maven配置全局私服地址和阿里云仓库

    直接上配置代码 <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apa ...

  6. 【Azure 应用程序见解】在Azure门户中,创建App Service(应用服务)时,无法一起创建Application Insights的问题

    问题描述 创建Web应用时启用监视的问题.Azure管理员(Admin)用户下分配了 一个子用户.但是在使用子用户创建WEB应用的时候,启用 Application Insights 选项的 &quo ...

  7. UI自动化如何保持登录状态?

    给页面设置cookie信息,刷新页面清楚缓存实现保持登录状态: 通过cookie保持登录,1手动登录,通过applacation提取登录的cookie,2通过driver.add_cookie({&q ...

  8. Mysql进阶目录

    一:Mysql字符集问题 二:Mysql_Sql模式 三:Mysql的数据目录 四:Mysql用户管理 五:Mysql权限管理 六: 权限表 七: 角色管理 八: Mysql配置文件的使用 九: My ...

  9. better-scroll 1.13

    简单入门示例:快速使用: <template> <div class="wrapper"> <div class="content" ...

  10. vscode 函数注释方法 输入 /** 回车 自动就出来了

    vscode 函数注释方法 输入 /** 回车 自动就出来了