PyQt5学习--基本窗口控件--QMainWindow
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(www.boshenyl.cn )
self.status.showMessage("这是状态栏提示",5000)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("www.yszx11.cn/ /images/cartoon1.ico"))
main = MainWidget(www.mhylpt.com/)
main.show()
sys.exit(app.exec_())
移动和关闭主窗口
#coding='utf-8'
#将窗口移动到屏幕中间和关闭主窗口的例子
import sys
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QHBoxLayout,QPushButton,QApplication,QWidget
class WinForm(QMainWindow):
def __init__(self,parent=None):
super(WinForm, self).__init__(parent)
self.setWindowTitle('窗口放在中间和关闭主窗口的例子')
self.resize(370,250)
self.center(www.wanmeiyuele.cn )
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(www.caibaoyule.cn )
#将窗口移动到屏幕中间
self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)
def onButtonClick(self):
# sender是发送信号的对象
sender = self.sender()
print(sender.text(www.jyz521.com/)+'被按下了')
qApp = QApplication.instance()
qApp.quit(www.365soke.cn)
if __name__ == '__main__':
app = QApplication(sys.argv)
form = WinForm()
form.show()
sys.exit(app.exec_())
PyQt5学习--基本窗口控件--QMainWindow的更多相关文章
- Win32汇编学习(9):窗口控件
这次我们将探讨控件,这些控件是我们程序主要的输入输出设备. 理论: WINDOWS 提供了几个预定义的窗口类以方便我们的使用.大多数时间内,我们把它们用在对话框中,所以我们一般就它们叫做子窗口控件.子 ...
- 【转】PyQt5系列教程(七)控件
PyQt5系列教程(七)控件 软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...
- Swift学习之熟悉控件
最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢 ...
- Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)
用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是 回调函数.我的理解是这样的: 回 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等 ...
- asp.net学习之Repeater控件
asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...
- [转载]ExtJs4 笔记(9) Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- 使用DataGridView数据窗口控件,构建用户快速输入体验
在"随风飘散" 博客里面,介绍了一个不错的DataGridView数据窗口控件<DataGridView数据窗口控件开发方法及其源码提供下载>,这种控件在有些场合下,还 ...
- WPF中窗口控件的跨线程调用
在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可. 在WPF中要麻烦一下,同样的不允许跨线程访问,因为没 ...
- asp.net学习之DataList控件
asp.net学习之DataList控件 DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...
随机推荐
- MAthJax入门教程(五分钟上手)
最近在研究,在页面中显示一些数学公式.搞得我很头疼. 据说MathJax会统一这已领域.所以去学了学.网上教程特别多.繁杂. 说的清楚的特别少. 我是这么跑通的,: 1.在官网下载代码地址为:http ...
- STM32CubeMx配置SPI注意的一个问题
这样配置SPI引脚 然后这样配置SPI参数 生成立这样的配置代码 /* SPI2 init function */static void MX_SPI2_Init(void){ /* SPI2 par ...
- hive的desc命令
desc命令 desc 命令是为了展示hive表格的内在属性.例如列名,data_type,存储位置等信息.这个命令常常用在我们对hive表格观察之时,我们想要知道这个hive各个列名(基于这些具体列 ...
- Java学习笔记十:Java的数组以及操作数组
Java的数组以及操作数组 一:什么是数组: 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩 数组中的元 ...
- HDU暑假多校第四场J-Let Sudoku Rotate
一.题意 Sudoku is a logic-based, combinatorial number-placement puzzle, which is popular around the wor ...
- LeetCode:22. Generate Parentheses(Medium)
1. 原题链接 https://leetcode.com/problems/generate-parentheses/description/ 2. 题目要求 给出一个正整数n,请求出由n对合法的圆括 ...
- 深度学习之卷积神经网络CNN
转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...
- spring读取properties和其他配置文件的几种方式
1.因为spring容器的一些机制,在读取配置文件进行数据库的配置等等是很有必要的,所以我们要考虑配置文件的的读取方式以及各个方式的实用性 2.配置文件的读取方式我这里介绍2种,目的是掌握这2种就可以 ...
- ACE Reactor 源码解析
http://blogs.readthedocs.org/ ACE的学习笔记,根据源码分析了Reactor模型的实现. 因为笔记编写技术限制,这里仅列出主要目录,如有可能可以抽空复制到该Blog中 ...
- 国际电话区号SQL
CREATE TABLE `phone_prefix` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `country` varchar(30) N ...