PyQt5学习--基本窗口控件--QMainWindow
参考书籍《PyQt5 快速开发与实战》王硕 孙洋洋 著
QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件。比如将工具栏、菜单栏和状态栏等添加到布局管理器中。
窗口类型介绍
QMainWindow、QWidget和QDialog三个类都是用来创建窗口的。
QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式。
QWidget是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的,也可以是非模态的。
如果是主窗口,就使用QMainWindow类;如果是对话框,就使用QDialog类;如果不确定,或者有可能作为顶层窗口,也有可能嵌入到其他窗口中,就使用QWidget类。
创建主窗口
QMainWindow类中比较重要的方法如下表所示:
方法 | 描述 |
---|---|
addToolBar() | 添加工具栏 |
centralWidget() | 返回窗口中心的一个控件,未设置时返回NULL |
menuBar() | 返回主窗口的菜单栏 |
setCentralWidget() | 设置窗口中心的控件 |
setsStatusBar() | 设置状态栏 |
statusBar() | 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法,显示状态栏信息 |
直接上书上的代码
代码示例
创建主窗口
# -*- coding: utf-8 -*- '''【简介】PyQT5中主窗口例子
'''import sys
from PyQt5.QtWidgets import QMainWindow , QApplication
from PyQt5.QtGui import QIcon class MainWidget(QMainWindow):def __init__(self,parent=None):super(MainWidget,self).__init__(parent)# 设置主窗体标签self.setWindowTitle("QMainWindow 例子") self.resize(400, 200) self.status = self.statusBar()self.status.showMessage("这是状态栏提示",5000)if __name__ == "__main__": app = QApplication(sys.argv)app.setWindowIcon(QIcon("./images/cartoon1.ico"))main = MainWidget()main.show()sys.exit(app.exec_())
移动和关闭主窗口
#coding='utf-8'
#将窗口移动到屏幕中间和关闭主窗口的例子import sys
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QHBoxLayout,QPushButton,QApplication,QWidgetclass WinForm(QMainWindow):def __init__(self,parent=None):super(WinForm, self).__init__(parent)self.setWindowTitle('窗口放在中间和关闭主窗口的例子')self.resize(370,250)self.center()self.button1 = QPushButton('关闭主窗口')#将按钮的clicked信号与onButtonClick槽函数关联起来self.button1.clicked.connect(self.onButtonClick)layout = QHBoxLayout()layout.addWidget(self.button1)main_frame = QWidget()main_frame.setLayout(layout)self.setCentralWidget(main_frame)def center(self):#获得屏幕的大小screen = QDesktopWidget().screenGeometry()#获得QWidget窗口的大小size = self.geometry()#将窗口移动到屏幕中间self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)def onButtonClick(self):# sender是发送信号的对象sender = self.sender()print(sender.text()+'被按下了')qApp = QApplication.instance()qApp.quit()if __name__ == '__main__':app = QApplication(sys.argv)form = WinForm()form.show()sys.exit(app.exec_())
效果展示
参考资源
1.《PyQt5快速开发与实战》王硕,孙洋洋
2.《PyQt5快速开发与实战》源代码下载链接
PyQt5学习--基本窗口控件--QMainWindow相关推荐
- PyQt5学习--基本窗口控件--QLabel
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF动画,还可以被用作提示标记为其他控件.纯文本. ...
- PyQt5学习--基本窗口控件--加载文件-QFileDialog
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 QFileDialog是用来打开和保存文件的标准对话框.QFileDialog类继承自QDialog类. QFileDialo ...
- PyQt5学习--基本窗口控件--QButton类控件
参考书籍<PyQt5 快速开发与实战>王硕 孙洋洋 著 介绍 PyQt5按钮的基类是QAbstractButton,为抽象类,不能实例化. 常见的按钮类有:QPushButton.QToo ...
- 实战PyQt5: 052-停靠窗口控件QDockWidget
QDockWidget简介 在很多桌面应用软件中,比如Qt的C++ IDE集成开发环境Qt Creater, 宇宙第一集成开发环境Visual Studio等工程软件,都使用了停靠窗口布局,这样做有一 ...
- PYQT5(13)-基本窗口控件-拖曳与剪贴板
Drag与Drop 为用户提供的拖曳功能很直观,在很多桌面应用程序中,复制或移动对象都可以通过拖曳来完成. 基于MIME类型(Multipurpose Internet Mail Extension, ...
- PYQT5(12)-基本窗口控件-窗口绘图类空间
一般通过QPainter.QPen和QBrush这三个类来实现绘图功能.QPixmap的作用是加载并呈现本 地图像,其图像的呈现本质上也是通过绘图方式实现的. QPainter QPainter类在Q ...
- 【pyqt5学习】——tablewidget控件学习
目录 1.Table Widget 1.QTableWidget不能在mainwindow中随主窗口的大小变化? 2.将表格变为禁止编辑: 3.设置表格为整行选择 4.单个选中和多个选中的设置: 5. ...
- python 动态调整控件大小_python PyQt5如何让窗口控件与窗口大小同步变化?
在下面的代码中 self.tableWidget.resize(self.width()-20,self.height()-20) self.tableWidget.move(10,20) 这两行没有 ...
- qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...
QWidget基本介绍 基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类. 窗口坐标系统 PyQt使用统一的坐标系统来定位窗口控件的位置和 ...
最新文章
- 机器学习特征筛选:相关系数法(correlation)
- Python模块学习 ---- re正则表达式
- Java学习笔记之 IO包 字符流
- 从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素
- 前端学习(2930):内嵌改变样式
- C++常类型(const)
- 太阳直射点纬度计算公式_全纬度昼夜长短通用公式
- python3.6安装cv2库_win10 +python3.6环境下安装opencv以及pycharm导入cv2有问题的解决办法...
- Cover Protocol发起新提案,为Nexus Mutual提供保险覆盖
- Oracle 11gR2学习之二(创建数据库及OEM管理篇)
- Kubernetes迁移指北 | 凌云时刻
- 小米max2装鸿蒙,小米Max2最全评测 小米Max2值不值得买?
- mac 安装 android 系统,苹果电脑Mac系统如何安装Android模拟器?
- AB余商c语言编程答案,C语言课后题编程答案
- 物联网毕业设计 太空游戏机设计与实现
- 利用CCS6.1 对MSP432 做factory reset
- HFUT雨课堂形式与政策【支持考试】
- 在桌面右键菜单添加【切换电源计划-卓越性能】选项
- APICLOUD实现沉浸式导航栏在Android和ios上的兼容
- Necklace(树状数组+离线操作)
热门文章
- 自定义 BaseServlet,通用Servlet的抽取,模块化开发Servlet
- mysql查询多造一列_mysql某列多值查询_MySQL
- 计算机能考四川司法学院吗,四川司法警官职业学院计算机文化基础课程在线考试系统...
- shell中encoding=utf-8_如何在Linux中将文件转换为UTF-8编码
- DP4 最小花费爬楼梯
- 洛谷——P1482 Cantor表(升级版)
- 外边距合并(HTML、CSS)
- node函数 python_成为Python大牛必须要掌握的高端语法(附链接代码)
- 天眼探空经济发展_“天眼”探空惊艳全球
- 深度学习模型在训练集上很好而在测试集表现得不好而拟合次数并不多_机器学习中的过拟合,欠拟合和偏倚方差折衷...