QMainWindow

QMainWindow控件继承之QWidget控件,QWidget是所有控件的父类,主要提供界面的基本功能,包括边框、标题、工具栏、关闭按钮、最小化按钮以及最大化按钮等。子类中再进行差异化的设置,完成具体控件的效果。

QMainWindow控件里面包含:菜单栏、工具栏、状态栏以及中心子窗口。相关接口如下:

方法 描述
menuBar() 获取主窗口菜单栏
addMenu() 添加子菜单栏到父菜单栏
addAction() 添加菜单栏/工具栏中的具体选项
addToolBar() 添加工具栏,返回值是新增的工具栏对象
setCenterWidget() 添加中心子窗口
setStatusBar() 设置状态栏
statusBar() 获取状态栏对象
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenu, QStatusBar, QWidget, QLabel class MyWidget(QMainWindow):
def __init__(self):
super(MyWidget, self).__init__()
self.initMenuBar()
self.initToolBar()
self.initCenter()
self.initStatusBar() def initMenuBar(self):
self.open = QAction('Open(&O)', self)
self.close = QAction('Close(&C)', self)
self.ascii = QAction('Ascii(&A)', self)
self.utf = QAction('UTF(&U)', self)
self.utf8 = QAction('UTF8(&V)', self) self.menu = self.menuBar()
self.file = self.menu.addMenu('File(&F)')
self.file.addAction(self.open)
self.file.addAction(self.close) self.langurage = QMenu('Langurage(&L)', self)
self.langurage.addAction(self.ascii)
self.langurage.addAction(self.utf)
self.langurage.addAction(self.utf8)
self.menu.addMenu(self.langurage) def initToolBar(self):
self.fileToolBar = self.addToolBar('File')
self.fileToolBar.addAction(self.open)
self.fileToolBar.addAction(self.close) self.langurageToolBar = self.addToolBar('Langurage')
self.langurageToolBar.addAction(self.ascii)
self.langurageToolBar.addAction(self.utf)
self.langurageToolBar.addAction(self.utf8) def initStatusBar(self):
self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)
self.statusBar.showMessage('V1.0.0') def initCenter(self):
self.widget = QWidget(self)
self.setCentralWidget(self.widget)
label = QLabel(self.widget)
label.setText('center widget') if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.resize(500, 300)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())

小技巧

  • QAction中使用&可以设置快捷键,格式:WidgetName(&X)

  • 对于菜单栏中,要想选中/触发QAction,必须先触发QAction所在的QMenu,不能直接触发QAction

PyQt5主界面的更多相关文章

  1. pyqt5 主界面打开新主界面、打开Dialog、打开提示框的实现模板

    import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * ###### ...

  2. pyqt5 主界面打开新主界面的实现

    import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * ###### ...

  3. PyQt5实现界面跳转

    网上关于PyQt5的教程很少,特别是界面跳转这一块儿,自己研究了半天,下来和大家分享一下 一.首先是主界面 1 # -*- coding: utf-8 -*- # Form implementatio ...

  4. android布局实践——模仿微信主界面

    这是目前微信6.0版本的主界面 先来分析一波: 1.(top.xml)界面头部有一个微信(6)消息提醒    一个搜索图标   一个更多的的图标+,中间还有一段空白,我们可以弄两个textView(其 ...

  5. 使用DotNetBar制作漂亮的WinFrom界面,自定义AgileEAS.NET SOA平台WinClient主界面

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. delphi 一个线程和主界面的交互的演示代码

    求一个线程和主界面的交互的演示代码求一个线程和主界面的交互的演示代码.线程和主界面处于两个Unit.线程中的user中不能引用主窗口.我只是想学习一下,线程和主界面交互的方法.去网上查了好几天资料,能 ...

  7. Winform开发主界面菜单的动态树形列表展示

    我在之前很多文章里面,介绍过Winform主界面的开发,基本上都是标准的界面,在顶部放置工具栏,中间区域则放置多文档的内容,但是在顶部菜单比较多的时候,就需要把菜单分为几级处理,如可以在顶部菜单放置一 ...

  8. 安卓开发_慕课网_Fragment实现Tab(App主界面)

    学习内容来自“慕课网” 这里用Fragment来实现APP主界面 思路: 底部横向排列4个LinearLayout,每个LinearLayout包含一个图片按钮和一个文字 1.默认显示第一个功能(微信 ...

  9. 关于VS打包程序无法弹出主界面的问题

    代码中的程序很正常,VS打包之后,无法弹出主界面的问题. 这种问题,一般是缺少程序加载所必须的东西,包括dll,配置文件等. (1)程序主界面使用的是DevExpress,DevExpress的相关类 ...

随机推荐

  1. 多语言工作者の十日冲刺<6/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--第六天(05.05) 作业正文 ...

  2. 详述@Responsebody和HTTP异步请求的关系

    Map.ModelAndView.User.List等对象都可以作为返回值.上述这两种对象都可以使用此注解.使用此注解即表示是在同一次请求的响应体里返回.浏览器以异步http的方式来接收.比如后端的M ...

  3. tomcat中AJP协议和HTTP协议的区别

    tomcat的server.xml中的AJP和HTTP连接器区别 HTTP协议:连接器监听8080端口,负责建立HTTP连接.在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器. ...

  4. JavaWeb网上图书商城完整项目--day02-17.登录功能页面实现

    1.当在登陆页面点击登陆按钮的时候,会调用UserServlet的login方法,我们要在login.jsp中进行配置 2.要在login.jsp中处理Servlet在后台业务操作之后forward到 ...

  5. Freemarker在replace替换是对NULL值的处理

    freemarker的对象调用内建函数时,比如userInfo对象的birthDay函数,页面${userInfo.birthDay}调用,当我想将birthDay值中的“-”替换为“/”时,${us ...

  6. rodert单排学习redis进阶【白银一】

    redis之白银一 说些题外话,最近帝都疫情又严重,大家都身处时代洪流中,这不是个别人能左右的,希望你能保护好自己,天天开心. 前言 1.Redis 客户端 1.1.Redis Desktop Man ...

  7. bug和测试报告思维导图

    Bug定义: 1.不符合需求的 2.程序本身的报错 3.不符合用户使用习惯的 Bug生命周期: 当我们测试人员提交一个bug的时候,自始bug就有它的生命周期,从开始到结束, 把测试的过程和结果写成文 ...

  8. Docker编写镜像 发布个人网站

    推荐国内镜像中心:网易云镜像----> https://c.163.com/hub#/home  或者歪果镜像---> https://hub.docker.com/ 博客地址:http: ...

  9. linux下将多个ts文件合并为一个MP4文件

    1. 安装ffmpeg工具 sudo apt install ffmpeg 2. 确保所有ts文件无损坏后,确保当前目录(即存放ts文件的目录)无txt文件及mp4文件,在存放ts文件的目录下建立te ...

  10. C++多种方法枚举串口号

    部分方式没结果,思路应该是没错. //7. std::cout << "M8: SetupDiGetClassDevs " << std::endl; // ...