python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
作者:jia666666 发布时间:2023-05-25 23:48:29
QWidget基本介绍
基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类。
窗口坐标系统
PyQt使用统一的坐标系统来定位窗口控件的位置和大小,具体如下
以屏幕左上角为原点,也就是(0, 0)点,从左向右为x轴正方向,从上向下为y轴正方向,整个屏幕的坐标系统用来定位顶层窗口。
在窗口内部也有自己的坐标系统,该坐标系统以客户区的左上角为原点,从左向右为x轴正方向,从上到下为y轴正方向,在客户区周围有标题栏和边框。
从上图中,可以将这些成员函数分成三类:
QWidget直接提供的成员函数,x(), y()获得整个窗口左上角的坐标,width()和height()返回客户区的宽度和高度。
QWidget的geometry()提供的成员函数,x(),y()返回的是客户区左上角坐标,width(),height()返回客户区宽度和高度。
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_())
效果如下图:输出客户区的相关属性
设置程序图标实例
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_())
效果如下:实现了程序左上角图标的加载
显示气泡提示信息实例
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详细使用方法,要了解更多关于这方面的知识请查看下面的相关链接
来源:https://blog.csdn.net/jia666666/article/details/81489090


猜你喜欢
- PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Proje
- 2008年,对于JavaScript来说是非常振奋人心的一年,很多高人加入到JavaScript和Web开发的阵营中来,浏览器厂商在技术上互
- 今天因工作需要写了个小程序,用于在图片集中自动抽取需要的照片。该程序只是实现了基本功能,还有很多需要完善的地方,展示出来算是给自己鼓鼓气吧。
- 前言最近在使用pytorch的时候,模型训练时,不需要使用forward,只要在实例化一个对象中传入对应的参数就可以自动调用 forward
- 介绍这道题是这样的,有一个二叉树,让求出这颗Bt树里面最大的宽度是有几个节点,同时还要求出最大宽度的这些节点在第几层?比如:下面这颗树,它每
- 函数执行流程def foo1(b,b1=3): print("foo1 called",b,b1)def
- 本文实例讲述了python实现希尔排序算法的方法。分享给大家供大家参考。具体如下:def shellSort(items): i
- 一、变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end 块中使用,变量必须定义在
- 本文实例讲述了Python实现数通设备端口使用情况监控的方法。分享给大家供大家参考。具体如下:最近因工作需要,上面要求,每天需上报运维的几百
- python这款软件是很多程序员都会使用到的编程软件,利用python大家可以快速的编写代码,同时代码运行速度也是非常快的。在python中
- 为了给导航栏添加响应式特性,您要折叠的内容必须包裹在带有 classes .collapse、.navbar-collapse 的 <
- 一、系统要求操作系统:Windows 2012 R2数据库:SqlServer2012web服务器:APACHE =>httpd-2.
- 修改字符串本身是不可能的,因为字符串是不可变类型,只能是通过某些方法来产生它的副本。再把副本赋值给原字符串,达到类似替换的作用。这里介绍几种
- 增加索引可以提高查询效率。增加索引就是增加一个索引文件,存放的是数据的地址,类似与我们文档的目录,在查找过程中可以不用从书的内容查找,直接根
- 概述Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发展,Python的职位需求越来越高。下面我收集了10个Pyth
- $tar xvf go1.3.3.linux-amd64.tar.gz$mv go /usr/local/$vim /etc/profile
- 基本设置class Map3D( # 初始化配置项,参考 `global_options.InitOpts` &n
- 目录arrow模块的使用获取arrow对象时间形式转换获取数据修改时间总结Python中有很多时间和日期处理的库,有time、datetim
- 我最近花了一些时间在探索CPython,并且我想要在这里分享我的一些冒险经历。Allison Kaptur的excellent guide
- 利用Python3来实现TCP协议,和UDP类似。UDP应用于及时通信,而TCP协议用来传送文件、命令等操作,因为这些数据不允许丢失,否则会