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

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

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

如何在mainwindow中添加菜单栏

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

1.直接创建mainwindow进行添加

import sysfrom PyQt5.QtWidgets import QMainWindow, QLabel, QApplicationclass 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中显示Menumenu.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 sysfrom 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.lryc.cn/news/520917.html

相关文章:

  • 浅谈云计算01 | 云计算服务的特点
  • 【开题报告】基于springboot的煤矿安全监测系统的设计与实现
  • 微服务中引入消息队列的利弊
  • Redis缓存穿透、缓存雪崩和缓存击穿
  • EF Core分页
  • 高效设计新选择!用StartAI打造各种风格主题的平铺素材图!
  • 大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
  • qml Emitter 详解
  • 【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接
  • mybatis-spring @MapperScan走读分析
  • Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)
  • 【0x005B】HCI_Write_Default_Erroneous_Data_Reporting命令详解
  • 基于 Python 的学生成绩管理系统设计与实现
  • 【Apache Doris】周FAQ集锦:第 29 期
  • 【C】初阶数据结构3 -- 单链表
  • Autodl安装tensorflow2.10.0记录
  • 【Rust】常见集合
  • SpiderFlow平台v0.5.0之引入selenium插件
  • git push命令
  • 洛谷P1161
  • Python脚本自动发送电子邮件
  • vscode的安装与使用
  • sparkRDD教程之必会的题目
  • Unity 2d描边基于SpriteRender,高性能的描边解决方案
  • 信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
  • js基础---var与let的区别以及const的使用
  • 用css和html制作太极图
  • OJ12:160. 相交链表
  • 软件工程和项目管理领域 - CMMI 极简理解
  • C# 线程基础之 线程同步