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_())

最新文章

  1. 原生js之四步走搞定Ajax
  2. [转]序列化悍将Protobuf-Net,入门动手实录
  3. Android EditText悬浮在输入法之上
  4. timeSeries db之:使用Metrics监控应用程序的性能 (zz)
  5. Apache是目前应用最广的Web服务器,PHP3是一种类似ASP的脚本语言
  6. Google 推出的 Java 编码规范(转)
  7. MYSQL查询某字段中以逗号分隔的字符串的方法
  8. c++ 显示调用dll
  9. (102, "Incorrect syntax near '-'.DB-Lib error message 102, severity 15:\nGen
  10. python写端口批量扫描器
  11. 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法
  12. 爬虫之selenium和PhantomJS
  13. WebStorm过期解决方法
  14. tomcat通过一个端口号实现多域名访问
  15. python 机器学习中模型评估和调参
  16. uva11388
  17. Android 4.0以上BlurMaskFilter效果无效
  18. redis 连接池的一些问题
  19. 次讲解js中的回收机制是怎么一回事。
  20. KMP算法最浅显理解——一看就明确

热门文章

  1. python 方法解析顺序 mro
  2. maven-认识
  3. 001---C/S架构
  4. 当安装mongodb客户端出现了Failed to load list of databases
  5. Python3爬虫(二)网络爬虫的尺寸与约束
  6. 洛谷P4016 负载平衡问题
  7. WRITE
  8. DAG上dp思想
  9. 长沙Uber优步司机奖励政策(3月28日)
  10. 2426: [HAOI2010]工厂选址