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的更多相关文章

  1. Win32汇编学习(9):窗口控件

    这次我们将探讨控件,这些控件是我们程序主要的输入输出设备. 理论: WINDOWS 提供了几个预定义的窗口类以方便我们的使用.大多数时间内,我们把它们用在对话框中,所以我们一般就它们叫做子窗口控件.子 ...

  2. 【转】PyQt5系列教程(七)控件

    PyQt5系列教程(七)控件   软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...

  3. Swift学习之熟悉控件

    最近是比较清闲一些的,对于一个开发者来说,这也是一个很好的充电机会.以前做项目都是使用Objective-C去开发,但我们都知道,Swift语言从2014年的出现到现在,一步一步变的完善,渐渐变的受欢 ...

  4. Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)

    用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是 回调函数.我的理解是这样的: 回 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等 ...

  5. asp.net学习之Repeater控件

    asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...

  6. [转载]ExtJs4 笔记(9) Ext.Panel 面板控件、 Ext.window.Window 窗口控件、 Ext.container.Viewport 布局控件

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  7. 使用DataGridView数据窗口控件,构建用户快速输入体验

    在"随风飘散" 博客里面,介绍了一个不错的DataGridView数据窗口控件<DataGridView数据窗口控件开发方法及其源码提供下载>,这种控件在有些场合下,还 ...

  8. WPF中窗口控件的跨线程调用

    在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可. 在WPF中要麻烦一下,同样的不允许跨线程访问,因为没 ...

  9. asp.net学习之DataList控件

    asp.net学习之DataList控件   DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...

随机推荐

  1. MySql外键建立在哪里(更新)

    一对一的时候:分为主表和附表  外键建立在附件上  附表的外键关联到主表的主键上,Example:学生表和学生信息表,在学生信息表上建立外键 一对多的时候:分为一和多  外键建立在多上  Exampl ...

  2. C#5.0异步编程 HttpClient IP代理验证原码

    //访问HttpClient 代码 public async Task<string> VerifyProxy(string url, string proxy = "" ...

  3. Windows 10 登录界面的背景图片地址

    C:\Users\******\appdata\Local\Packages\Microsoft.Windows.ContentDeliveryManager_********\LocalState\ ...

  4. CentOS下禁止防火墙

    CentOS下禁止防火墙 1.使用如下命令安装iptables-services. yum install -y iptables-services 2.关闭防火墙. service iptables ...

  5. Python的scrapy之爬取妹子图片

    闲来无事,做的一个小爬虫项目 爬虫主程序: import scrapy from ..items import MeiziItem class MztSpider(scrapy.Spider): na ...

  6. python基础之初识

    一. 计算机是什么 基本组成: 主板+cpu+内存 cpu: 主频, 核数(16) 内存:大小(8G, 16G, 32G) 型号: DDR3, DDR4, DDR5, 主频(海盗船,玩家国度) 显卡: ...

  7. linux网络服务实验

    1.设置window IP地址为192.168.3.XX,掩码24位. 2.设置Linux IP地址为192.168.3.YY,掩码24位.window与Linux互相ping通. 3.在linux中 ...

  8. CUBLAS基础实验

    一.概述 最近在试图进行cuda并行编程,目标是编写一段矩阵计算代码,将计算结果存储进入GPU的缓冲区当中,并在达到某些要求后强制刷新缓冲区,取得计算结果. 但是考虑时间紧任务重的状况和实际的性能要求 ...

  9. 3468-A Simple Problem with Integers 线段树(区间增减,区间求和)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 110077 ...

  10. HTML布局的元素

    header 定义文档或节的页眉 nav 定义导航链接的容器 section 定义文档中的节 article 定义独立的自包含文章 aside 定义内容之外的内容(比如侧栏) footer 定义文档或 ...