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中比较特别的除法运算和幂运算介绍
Apr 05 Python
python实现telnet客户端的方法
Apr 15 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
pycharm快捷键汇总
Feb 14 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
Python如何识别银行卡卡号?
Jun 10 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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学习之简单计算器实现代码
2011/06/09 PHP
php图像处理类实例
2015/07/28 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
js活用事件触发对象动作
2008/08/10 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
Django视图和URL配置详解
2018/01/31 Python
python复制文件到指定目录的实例
2018/04/27 Python
Python中的函数作用域
2018/05/07 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python 复平面绘图实例
2019/11/21 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
产品质量承诺书
2014/03/27 职场文书
工作推荐信范文
2014/05/10 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
企业务虚会发言材料
2014/10/20 职场文书
投标邀请书范本
2015/02/02 职场文书
员工离职证明范本
2015/06/12 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers