当前位置: 首页 > article >正文

【PyQt】如何在mainwindow中添加菜单栏

@[toc]如何在mainwindow中添加菜单栏

如何在mainwindow中添加菜单栏

主要有两种方法:
1.直接创建mainwindow进行添加
2.使用ui文件加载添加
第二种方法更为常见,可以应用到实际

1.直接创建mainwindow进行添加

import sys

from PyQt5.QtWidgets import QMainWindow, QLabel, QApplication


class MyWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        label = QLabel("这是文字~~")
        label.setStyleSheet("font-size:30px;color:red")

        # 调用父类中的menuBar,从而对菜单栏进行操作
        menu = self.menuBar()
        # 如果是Mac的话,菜单栏不会在Window中显示而是屏幕顶部系统菜单栏位置
        # 下面这一行代码使得Mac也按照Windows的那种方式在Window中显示Menu
        menu.setNativeMenuBar(False)

        file_menu = menu.addMenu("文件")
        file_menu.addAction("新建")
        file_menu.addAction("打开")
        file_menu.addAction("保存")

        edit_menu = menu.addMenu("编辑")
        edit_menu.addAction("复制")
        edit_menu.addAction("粘贴")
        edit_menu.addAction("剪切")

        # 设置中心内容显示
        self.setCentralWidget(label)


if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = MyWindow()
    # 设置窗口标题
    w.setWindowTitle("我是窗口标题....")
    # 展示窗口
    w.show()

    # 程序进行循环等待状态
    app.exec()

2.使用ui文件加载添加

重点就是先加载ui文件,使用self.ui.menubar进行添加


import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *
from PyQt5 import uic
class MyWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        # 主窗口的设置
        self.ui = uic.loadUi("./Main_window.ui")
        # 加载好ui文件之后再进行设置菜单栏
        menu = self.ui.menubar
        # menu.setNativeMenuBar(False)
        file_menu = menu.addMenu("文件")
        file_menu.addAction("新建")
        file_menu.addAction("打开")
        file_menu.addAction("保存")

        edit_menu = menu.addMenu("编辑")
        edit_menu.addAction("复制")
        edit_menu.addAction("粘贴")
        edit_menu.addAction("剪切")
        print(self.ui.__dict__)  # 查看ui文件中有哪些控件
        self.center() # 居中窗口

    def center(self):
        qr = self.frameGeometry()
        # 得到了主窗口大小
        print('qr:', qr)
        cp = QDesktopWidget().availableGeometry().center()
        # 获取显示器的分辨率,然后得到中间点的位置
        print('cp:', cp)
        qr.moveCenter(cp)
        # 然后把自己的窗口的中心点放到qr的中心点
        self.move(qr.topLeft())
if __name__=="__main__":
    app = QApplication(sys.argv)

    w = MyWindow()
    # 展示窗口
    w.ui.show()

    app.exec()

效果图

在这里插入图片描述


http://www.kler.cn/a/501749.html

相关文章:

  • 在 Safari 浏览器中,快速将页面恢复到 100% 缩放(也就是默认尺寸)Command (⌘) + 0 (零)
  • uniApp通过xgplayer(西瓜播放器)接入视频实时监控
  • sql模糊关联匹配
  • 智慧公厕大数据驱动下的公共卫生管理与优化
  • 【文件锁】多进程线程安全访问文件demo
  • 深度学习-卷积神经网络反向传播梯度公式推导
  • mac安装java17
  • GitLab CI/CD使用runner实现自动化部署前端Vue2 后端.Net 7 Zr.Admin项目
  • ASP.NET Core - 自定义中间件
  • (10)Ajax
  • Spring 核心指南(上):IoC 容器与配置方式详解
  • bert微调下游任务-情感分析
  • WRF模式与Python融合技术在多领域中的应用及精美绘图;Python助力WRF自动化运行、WRF模式前后处理等
  • 达梦8-DMSQL程序设计学习笔记1-DMSQL程序简介
  • ASP.NET Core 中,Cookie 认证在集群环境下的应用
  • c# 和python封装起保停
  • 功能篇:mybatis中实现缓存
  • JSON头文件调用
  • Fastapi0.115.6之Tortoise ORM0.23.0基本增删改查大全【亲测可用,仅供参考】
  • AIDD-人工智能药物设计-通过组合生物合成产生新的类似物的抗真菌费尔南型三萜多聚类素的生物合成表征
  • AI多模态论文解读:LLaVA-CoT:让视觉语言模型逐步推理
  • uni-app持久化登录简单实现
  • 八、系统托盘与配置面板
  • springmvc前端传参,后端接收
  • StarRocks Awards 2024 年度贡献人物
  • 《解锁鸿蒙系统AI能力,开启智能应用开发新时代》