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 相关文章推荐
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
python实现机器人行走效果
Jan 29 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
python 实现逻辑回归
Dec 30 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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
yii2超好用的日期组件和时间组件
2016/05/05 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
javascript中对对层的控制
2006/12/29 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
python处理csv数据的方法
2015/03/11 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
python实现串口通信的示例代码
2020/02/10 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js