python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法


Posted in Python onFebruary 26, 2020

QMainWindow

QMainWindow类中比较重要的方法

方法 描述
addToolBar() 添加工具栏
centralWidge() 返回窗口中心的一个控件,未设置时返回NULL
menuBar() 返回主窗口的菜单栏
setCentralWidget() 设置窗口中心的控件
setStatusBar() 设置状态栏
statusBar() 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法
显示状态栏信息,其中第一个参数是要显示的状态栏信息,第二个参数是信息停留的时间,单位是毫秒,默认是0,表示一直显示状态栏信息

显示状态栏信息,其中第一个参数是要显示的状态栏信息,第二个参数是信息停留的时间,单位是毫秒,默认是0,表示一直显示状态栏信息

注意:QMainWindow不能设置布局(使用setLayout()方法),因为它有自己的布局

创建主窗口实例

#下面这行代码是为了避免在所生成的pyqt中出现中文乱码的问题
# -*- coding:UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
from PyQt5.QtGui import QIcon

class MainWindow(QMainWindow):
  def __init__(self,parent=None):
    #初始化继承的父类(Qmainwindow)
    super(MainWindow, self).__init__(parent)
    #设置窗口的大小
    self.resize(400,200)
    #实例化创建状态栏
    self.status=self.statusBar()
    #将提示信息显示在状态栏中showMessage(‘提示信息',显示时间(单位毫秒))
    self.status.showMessage('这是状态栏提示',4000)
    #创建窗口标题
    self.setWindowTitle('PyQt MainWindow例子')


if __name__ == '__main__':
  # 每一个pyqt程序中都需要有一个QApplication对象,sys.argv是一个命令行参数列表
  app=QApplication(sys.argv)
  #实例化窗口
  form=MainWindow()
  #窗口显示
  form.show()
  #进入程序的主循环,遇到退出情况,终止程序
  sys.exit(app.exec_())

效果图如下:

python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法

主窗口居中显示实例

from PyQt5.QtWidgets import QDesktopWidget,QApplication,QMainWindow
import sys

class WinForm(QMainWindow):
  def __init__(self,parent=None):
    super(WinForm, self).__init__(parent)

    self.setWindowTitle('主窗口居中的例子')
    #设置窗体的宽高
    self.resize(370,250)

    #调用一个函数
    self.center()

  def center(self):
    #获取屏幕的大小
    screen=QDesktopWidget().screenGeometry()
    #获取窗口的大小
    size=self.geometry()
    #将窗口移动到屏幕中央
    self.move((screen.width() - size.width()) /2,(screen.height() - size.height()) /2)


if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=WinForm()
  win.show()
  sys.exit(app.exec_())

效果如下:

python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法

关闭主窗口实例

from PyQt5.QtWidgets import QMainWindow,QApplication,QHBoxLayout,QPushButton,QWidget
import sys

class WinForm(QMainWindow):

  def __init__(self,parent=None):
    super(WinForm, self).__init__(parent)
    self.setWindowTitle('关闭主窗口的例子')
    #创建按钮实例,按钮名称:关闭主窗口
    self.button1=QPushButton('关闭主窗口')
    #按钮的clicked信号与onButtonClick槽函数关联起来
    self.button1.clicked.connect(self.onButtonClick)

    #水平布局
    layout=QHBoxLayout()
    #按钮加入水平布局中
    layout.addWidget(self.button1)

    #创建widget窗口实例
    main_frame=QWidget()
    #加载布局
    main_frame.setLayout(layout)
    #把widget窗口加载到主窗口的中央位置
    self.setCentralWidget(main_frame)

  def onButtonClick(self):
    #sender是发送信号的对象,这里获得的是按钮的名称
    sender=self.sender()
    #以文本的行书输出按钮的名称
    print(sender.text() + ' 被按下了')
    #获取QApplication类的对象
    qApp=QApplication.instance()
    #退出
    qApp.quit()
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=WinForm()
  win.show()
  sys.exit(app.exec_())

点击按钮,退出程序,控制台输出,关闭主窗口 被按下了

python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法

本文主要讲解了python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法,了解更多相关文章请查看下面的相关链接

Python 相关文章推荐
python3处理含有中文的url方法
May 10 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
python issubclass 和 isinstance函数
Jul 25 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
python 协程 gevent原理与用法分析
Nov 22 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
python speech模块的使用方法
Sep 09 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
python程序的组织结构详解
Dec 06 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 #Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 #Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 #Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 #Python
基于Python数据结构之递归与回溯搜索
Feb 26 #Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 #Python
Python基于Dlib的人脸识别系统的实现
Feb 26 #Python
You might like
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
详解React项目中碰到的IE问题
2019/03/14 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python中操作文件之write()方法的使用教程
2015/05/25 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
护士实习生自我鉴定范文
2013/12/10 职场文书
八年级音乐教学反思
2014/01/09 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
战友聚会主持词
2014/04/02 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
二年级评语大全
2014/04/23 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
产品推广策划方案
2014/05/10 职场文书
教师思想工作总结2015
2015/05/13 职场文书
新年晚会开场白
2015/05/29 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers