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 multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
详解Python pygame安装过程笔记
Jun 05 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
python requests.post带head和body的实例
Jan 02 Python
python读取图片任意范围区域
Jan 23 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
python绘制规则网络图形实例
Dec 09 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
Python gevent协程切换实现详解
Sep 14 Python
python excel和yaml文件的读取封装
Jan 12 Python
Python就将所有的英文单词首字母变成大写
Feb 12 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
DSP接收机前端设想
2021/03/02 无线电
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
tensorflow 输出权重到csv或txt的实例
2018/06/14 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
SQL写法--行行比较
2021/08/23 SQL Server
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android