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 相关文章推荐
Python3基础之条件与循环控制实例解析
Aug 13 Python
对于Python编程中一些重用与缩减的建议
Apr 14 Python
Python File readlines() 使用方法
Mar 19 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
用python做游戏的细节详解
Jun 25 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
Python 词典(Dict) 加载与保存示例
Dec 06 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
python 回溯法模板详解
Feb 26 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
记一次Django响应超慢的解决过程
Sep 17 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开发文件系统实例讲解
2006/10/09 PHP
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
原生js中ajax访问的实例详解
2017/09/19 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
软件配置管理有什么好处
2015/04/15 面试题
自主招生自荐信指南
2014/02/04 职场文书
毕业生自荐信格式
2014/03/07 职场文书
英文自荐信常用句子
2014/03/26 职场文书
小学大队委竞选口号
2015/12/25 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android