python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法


Posted in Python onFebruary 26, 2020

QWidget基本介绍

基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类。

窗口坐标系统

PyQt使用统一的坐标系统来定位窗口控件的位置和大小,具体如下

python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法

以屏幕左上角为原点,也就是(0, 0)点,从左向右为x轴正方向,从上向下为y轴正方向,整个屏幕的坐标系统用来定位顶层窗口。

在窗口内部也有自己的坐标系统,该坐标系统以客户区的左上角为原点,从左向右为x轴正方向,从上到下为y轴正方向,在客户区周围有标题栏和边框。

python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法

从上图中,可以将这些成员函数分成三类:

  1. QWidget直接提供的成员函数,x(), y()获得整个窗口左上角的坐标,width()和height()返回客户区的宽度和高度。
  2. QWidget的geometry()提供的成员函数,x(),y()返回的是客户区左上角坐标,width(),height()返回客户区宽度和高度。
  3. QWidget的frameGeometry()提供的成员函数,x(),y()返回的是整个窗口左上角的坐标,-width(),height()也是整个对话框的宽度和高度,包括标题栏和边框。

从上图可以看出来,QWidget有两种常见的几何结构

不包含外面各种边框的几何结构(客户区)。

包含各种边框的几何结构。

不包含边框常用函数

改变客户区面积

QWidget.resize(width, height)

获取客户区大小

QWidget.size()

获取客户区的宽度和高度

QWidget.width()

QWidget.height()

设置客户区的宽度和高度(在某些维度上值不可改变)

QWidget.setFixedWidth(int width)

QWidget.setFixedHeight(int height)

QWidget.setFixedSize(int width, int height)

设置窗口的位置(值可以改变)

QWidget.setGeometry(int x, int y, int width, int height)

包含边框常用函数

获取窗口的大小和位置

QWidget.frameGeometry()

设置窗口的位置

QWidget.move(int x, int y)

获取窗口左上角坐标

QWidget.pos()

屏幕坐标系统实例

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

app=QApplication(sys.argv)
#窗口
widget=QWidget()
#按钮继承在窗口中,并实例化
btn=QPushButton(widget)
#按钮命名
btn.setText('button')

#以QWdiget左上角为(0,0)点,按钮移动到坐标处
btn.move(20,20)
#不同的操作系统可能对窗口的最小宽度有规定,若设置宽度小于规定值,则会以规定值进行显示
widget.resize(300,200)
#以屏幕左上角为(0,0)的点,窗口移动到指定坐标处
widget.move(250,200)


widget.setWindowTitle('pyqt坐标系统例子')
widget.show()

#输出窗口的rect(x,y,width,height)
print('QWidget:')
#x,y获取窗口左上角的坐标
print('w.x()=%d' %widget.x())
print('w.y()=%d' %widget.y())
#width,height获取客户区的宽度与高度
print('w.width()=%d' %widget.width())
print('w.height()=%d' %widget.height())
#客户区的大小
print('客户区的大小:%d' %widget.size())


print('QWidget.geometry')
#x,y获取客户区的左上角坐标(包含窗口的标题与边框部分)
print('widget.geometry().x()=%d' %widget.geometry().x())
print('widget.geometry().y()=%d' %widget.geometry().y())
#width,height获取客户区的宽度与高度
print('widget.geometry().width()=%d' %widget.geometry().width())
print('widget.geometry().height()=%d' %widget.geometry().height())



sys.exit(app.exec_())

效果如下图:输出客户区的相关属性

python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法

设置程序图标实例

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget,QApplication


#创造一个名为Icon的窗口类,继承自Qwidget
class Icon(QWidget):
  def __init__(self,parent=None):
    super(Icon, self).__init__(parent)
    self.initUI()
  #初始化窗口
  def initUI(self):
    #设置窗口在屏幕中的位置与窗口的大小
    self.setGeometry(300,300,250,150)
    self.setWindowTitle('程序图标')
    #设置窗口图标,需要提供图标的路径
    self.setWindowIcon(QIcon('E:\pyqt5快速开发与实战\第四章\images\cartoon1.ico'))
if __name__ == '__main__':
  app=QApplication(sys.argv)
  icon=Icon()
  icon.show()
  sys.exit(app.exec_())

效果如下:实现了程序左上角图标的加载

python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法

显示气泡提示信息实例

import sys
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QWidget,QApplication,QToolTip

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

  def initUI(self):
    #设置气泡提示信息的字体和大小
    QToolTip.setFont(QFont('SansSerif',10))
    #设置气泡提示
    self.setToolTip('这是一个</b>气泡显示</b>')
    self.setGeometry(200,300,400,400)
    self.setWindowTitle('气泡提示demo')
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=WinForm()
  win.show()
  sys.exit(app.exec_())

本文详细介绍了PyQt5窗口控件QWidget详细使用方法,要了解更多关于这方面的知识请查看下面的相关链接

Python 相关文章推荐
python调用短信猫控件实现发短信功能实例
Jul 04 Python
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
Python之re操作方法(详解)
Jun 14 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
Python配置虚拟环境图文步骤
May 20 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
在cmd中查看python的安装路径方法
Jul 03 Python
在Django的View中使用asyncio的方法
Jul 12 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
Python帮你识破双11的套路
Nov 11 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 #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
You might like
PHP下对字符串的递增运算代码
2010/08/21 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
php的debug相关函数用法示例
2016/07/11 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
package.json文件配置详解
2017/06/15 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python assert语句的简单使用示例
2019/07/28 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
局域网标准
2016/09/10 面试题
后进生转化工作制度
2014/01/17 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
2014年党支部工作总结
2014/11/13 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
python单元测试之pytest的使用
2021/06/07 Python