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多进程编程技术实例分析
Sep 16 Python
Python查找相似单词的方法
Mar 05 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
python常用函数与用法示例
Jul 02 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
keras.utils.to_categorical和one hot格式解析
Jul 02 Python
python中xlutils库用法浅析
Dec 29 Python
Python如何telnet到网络设备
Feb 18 Python
利用python进行数据加载
Jun 20 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/11/28 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
关于crontab的使用详解
2013/06/24 PHP
php session的应用详细介绍
2017/03/22 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
可口可乐广告词
2014/03/20 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
质量保证书格式
2015/02/27 职场文书
2015年公司工作总结
2015/04/25 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL