QMainWindow, QWidget, QDialog三个类都是用来创建窗口的,可以直接使用或继承后再使用。QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也是GUI程序的主窗口。QDialog是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户互动,它可以是模态的,也可以是非模态的。QDialog窗口没有菜单栏、工具栏、状态栏等。

如果是主窗口,就用QMainWindow类。如果是对话框,就用QDialog类。如果不确定,或者有可能是顶层窗口,也有可能嵌入到其它窗口中,那就用QWidget类。

创建主窗口

如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口。QMainWindow就是一个顶层窗口。
QMainWindow类中比较重要的方法,如下:

addToolBar() : 添加工具栏

centralWidget() : 返回窗口中心的一个控件,未设置时返回NULL

menuBar() : 返回主窗口的菜单栏

setCentralWidget() : 设置窗口中心的控件

setStatusBar() : 设置状态栏

statusBar() : 获取状态栏对象后,调用状态栏对象的showMessage(message, int timeout = 0)方法,显示状态栏信息。其中第一个参数是显示的状态栏信息;第二个参数是信息停留的时间,单位是毫秒,默认是0, 表示一直显示状态栏信息

在开发GUI中,用Qt Designer虽然很方便,但是过于依赖,会导致很难理解QT的一些实现方法,我个人还是喜欢自己码代码。

实例一

创建一个简单的窗口:

import sys from PyQt5.QtWidgets import QMainWindow, QApplicationclass MainWindow(QMainWindow):def __init__(self, parent=None):  super(MainWindow, self).__init__(parent) self.resize(400, 200) self.status = self.statusBar() self.status.showMessage("这是一个状态栏", 5000) self.setWindowTitle("主窗口实例")if __name__ == "__main__": app = QApplication(sys.argv) form = MainWindow() form.show() sys.exit(app.exec_())

效果图:

实例二

创建按钮关闭主窗口&&主窗口居中显示:

import sys from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QDesktopWidget class MainWindow(QMainWindow): def __init__(self,parent=None):  super(MainWindow, self).__init__(parent) #窗体设置  self.resize(300, 200) self.setWindowTitle("关闭窗口") self.center() #按钮设置  self.btn = QPushButton("关闭") self.btn.clicked.connect(self.onBtnClickCloseWin) #单击事件   #布局  layout = QHBoxLayout()layout.addWidget(self.btn) widGet=QWidget() widGet.setLayout(layout) self.setCentralWidget(widGet) #窗体居中  def center(self):  self.size=QDesktopWidget().screenGeometry() self.resize=self.geometry() self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2) def onBtnClickCloseWin(self):  #发送消息对象 sender=self.sender()print( sender.text() + ' 被按下了' ) appInstance=QApplication.instance() appInstance.quit()if __name__=="__main__": app=QApplication(sys.argv) mainWindow=MainWindow() mainWindow.show() sys.exit(app.exec_())

效果图:

完结,后续持续更新PyQt5的相关内容.

qt设置顶层窗口_Python快速入门系列:PyQt5 快速开发GUI-窗口类型以及主窗口创建...相关推荐

  1. 【安全利器SELinux快速入门系列 | 01】SELinux基础入门

    这是机器未来的第35篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125914553 文章目录 1. 研究目标 2. se ...

  2. 【安全利器SELinux快速入门系列 | 02】SELinux 策略实施的可视化操作指南

    这是机器未来的第40篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126117336 SELinux 策略实施的可视化操作 ...

  3. 【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

    这是机器未来的第52篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226 <Python数据科学快速入 ...

  4. 【物体检测快速入门系列 | 03】Windows部署Docker GPU深度学习开发环境

    这是机器未来的第3篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/124815912 1. 概述 在<物体检测快速入门 ...

  5. 【物体检测快速入门系列 | 01 】基于Tensorflow2.x Object Detection API构建自定义物体检测器

    这是机器未来的第1篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124745966 CSDN话题挑战赛第1期 活动详情地址 ...

  6. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  7. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  8. python r转义_Python快速入门系列之二:还学不会我直播跪搓衣板

    Python作为一个,目前最火的编程语言之一,已经渗透到了各行各业.它易学好懂,拥有着丰富的库,功能齐全.人生苦短,就用Python. 这个快速入门系列分为六篇,包含了Python大部分基础知识,每篇 ...

  9. c# wpf listbox 高度_WPF快速入门系列(1)——WPF布局概览

    一.引言 关于WPF早在一年前就已经看过<深入浅出WPF>这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门系列,主要介绍WPF中 ...

最新文章

  1. 人工智能 MIT 博士系列讲课
  2. WAF Bypass数据库特性(Mysql探索篇)
  3. linux开机启动open,树莓派-linux的多种启动自运行方式
  4. PAT——1022. D进制的A+B
  5. hdu_2227_Find the nondecreasing subsequences_树状数组,离散化
  6. 经典的卷积神经网络简介
  7. SQL Server 2000 JDBC驱动的完整安装及测试说明
  8. 瓜州县电子政务工程_甘肃瓜州:“厕所革命”带来乡村新生活
  9. 机器学习中的数学(三)--牛顿法
  10. 优雅地修改多模块maven项目中的版本号
  11. 【青草识别】基于matlab GUI形态学马唐草+牛筋草识别【含Matlab源码 1041期】
  12. 解决求平均值出现加和导致的溢出问题
  13. STARK Arithmetization
  14. PotPlayer 高逼格无边框的本地播放器
  15. 利用c51进行数模转换并在液晶屏上显示_单片机数模转换
  16. CSS Table(表格)
  17. 我的编程奋斗历程[四部曲之三]-成为金子篇
  18. 30 年 IT 老兵谈数字化:这就不是个技术活
  19. AC695X_独立3路串口UART收发数据配置
  20. 斐波那契回调线怎么画_知行交易学院-新手教学-斐波那契回调线的正确画法(二)...

热门文章

  1. mysql dede arctiny_如何用织梦SQL命令行工具操作数据库及常用sql语句整理
  2. 计算机网络基本操作命令的使用,计算机网络-路由器基本命令操作实验指导书--华为...
  3. macbook linux 双系统,MacBook Air 安装 Ubuntu 双系统
  4. java面试题2021最新
  5. js并发上传文件到不同服务器,simple-uploader.js 功能强大的上传组件 - 文章教程
  6. lcd1602怎么利用按键清屏_边学边练,8个LCD1602精选电路方案大合辑
  7. ROS-手势控制小海龟移动
  8. Mozilla 发布新 Firefox 用户信息反跟踪策略
  9. Design7:数据删除设计
  10. AngularJs angular.equals