首页 > 编程语言 >PyQt5 GUI编程(QMainWindow与QWidget模块结合使用)

PyQt5 GUI编程(QMainWindow与QWidget模块结合使用)

时间:2024-04-03 11:37:57浏览次数:12  
标签:__ QMainWindow widget central updata GUI QWidget action self

一.简介

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_())
View Code

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

 

标签:__,QMainWindow,widget,central,updata,GUI,QWidget,action,self
From: https://www.cnblogs.com/lihongtaoya/p/18112260

相关文章

  • 在Linux中, 什么是命令行界面(CLI)和图形用户界面(GUI)?
    在Linux系统中,命令行界面(CLI)和图形用户界面(GUI)是用户与操作系统交互的两种主要方式。它们各自有不同的特点和适用场景。1.命令行界面(CLI)命令行界面,也称为命令行或终端,是一个基于文本的界面,用户通过键入命令来与系统交互。CLI的特点包括:简洁高效:CLI提供了一种快速执行任务的方......
  • JavaGUI实现文本转换、复制、顶置窗口等功能
    需求描述:实现对文本的处理,比如输入123输出('123')窗口顶置、取消顶置功能一键复制到剪切板源码实现packageJavaGUI;importjavax.swing.*;importjavax.swing.border.LineBorder;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.Actio......
  • Notes-02年Fan-2002-Analysis of guided resonances in photonic crystal slabs-BIC的
    Notes-02年Fan-2002-Analysisofguidedresonancesinphotoniccrystalslabs目录Notes-02年Fan-2002-Analysisofguidedresonancesinphotoniccrystalslabs共振的含义就是:在光锥内,发光、辐射。引言guidedmodeguidedmoderesonance--Similartotheguidedmode,a......
  • Unity UGUI之Text组件基础认识
    Text组件用于在游戏中显示文本。下面来细看下它的基本信息。一、基本属性:如上图所示,即为Text组件的一些基本属性,其中,Text:要显示的文本内容。Font:文本所使用的字体。FontStyle(字体样式):这个属性用于设置文本的字体样式,可以选择的选项包括Normal(正常)、Bold(加粗)、Ital......
  • C#将dataguidview与excel数据互相读写
    库需求需要NPOI库(处理Excel表格库)可在vs工具菜单栏中的NuGet包管理器中搜索NPOI下载·获得效果简单预览读点击查看代码privatevoidbtnRead_Click_1(objectsender,EventArgse){#region打开对话框,自定义选择要读取excel表格路径......
  • pyautogui
    fromtypingimportTupleimportpyperclipimportpyautoguiimportcv2importnumpyasnpclassGui(object):'''pyautogui操作'''@classmethoddeffind_img_position_yn(cls,file_path:str)->(int,i......
  • guice的MethodInterceptor的用法和使用场景和设计思想
    Guice是一个轻量级的依赖注入框架,它也提供了AOP(面向切面编程)的功能,其中MethodInterceptor是Guice用来实现AOP的一个接口。MethodInterceptor的用法:MethodInterceptor接口是AOP联盟(AOPAlliance)的一部分,Guice使用这个接口来定义方法拦截器。拦截器可以在方法执行前后添加......
  • Activate Guided Access mode to protect your privacy on iPhone
    Ifyoudon'tintendtosetupanAppLockforspecificapps,isthereasimplerwaytoachievethesamegoal?Theansweriscertainlyyes,andthatisbysettingup[GuidedAccessmode]whichconfinesactivitiestoasingleapp.Thismodeisnotenab......
  • 【GUI软件】抖音评论采集:自动采集10000多条,含二级评论、展开评论!
    一、背景说明1.1效果演示用python开发的dy爬虫采集软件,可自动抓取抖音评论数据,并且含二级评论!为什么有了源码还开发界面软件呢?方便不懂编程代码的小白用户使用,无需安装python、无需懂代码,双击打开即用!软件界面截图:爬取结果截图:以上。1.2演示视频软件运行演示:【软件演......
  • 【GUI软件】小红书按关键词采集笔记详情,支持多个关键词,含笔记正文、转评赞藏等
    目录一、背景介绍1.1爬取目标1.2演示视频1.3软件说明二、代码讲解2.1爬虫采集-搜索接口2.2爬虫采集-详情接口2.3cookie说明2.4软件界面模块2.5日志模块三、获取源码及软件一、背景介绍1.1爬取目标您好!我是@马哥python说,一名10年程序猿。熟悉我的小伙伴都了解,我之前开......