PyQt5基本窗口控件(二)QWidget
发布时间:2023-01-09 20:36:06 279
相关标签: # python# 脚本# 信息# 工具
(PyQt5基本窗口控件(二)QWidget)
二、QWidget
- 是基础窗口控件,是所有用户界面对象的基类,所有窗口和控件都继承自QWidget类。
- 窗口:包括标题栏、菜单栏、工具栏、关闭按钮、最小化、最大化按钮等。
- 控件:按钮、复选框、单选框、文本框、表格、进度条等
1、窗口坐标系统
- PyQt使用统一坐标系统来定位窗口控件的位置和大小,具体如下图。
- 以屏幕左上角为原点——即pos的(0, 0)点,从左向右为x轴正方向,从上向下为y轴正方向。同理每个窗口内部也有这样的坐标系统,原点、x轴、y轴围成的区域是ClientArea(客户区),在客户区的周围则是标题栏(WindowTitle)和边框(Frame)。
- 上图是QWidget的成员函数标识,分为三类。
- QWidget直接提供的成员函数:x()、y()获得窗口左上角的坐标,width()、height()获得客户区的宽度和高度。
- QWidget的geometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width()、height()获得客户区的宽度和高度。
- QWidget的frameGeometry()提供的成员函数:x()、y()获得窗口左上角的坐标,width()、height()获得客户区、标题栏和边框在内整个窗口的宽度和高度。
2、常用的几何结构
(1)QWidget不包含边框的常用函数
-
改变客户区的面积
QWidget.resize(width, height) QWidget.resize(QSize)
这俩函数改变了长方形窗体的大小,也可以用鼠标拖动
-
获得客户区的大小
QWidget.size()
-
获得客户区的宽度和高度
QWidget.width() QWidget.height()
-
设置客户区的宽度和高度
QWidget.setFixedWidth(int width)
使用这个函数,客户区高度就是固定的,只可以改变宽度。
QWidget.setFixedHeight(int height)
这个函数宽度固定,只能改变高度
QWidget.setFixedSize(Qsize size) QWidget.setFixedSize(int width, int height)
这俩函数,高度宽度都固定。
QWidget.setGeometry(int x, int y, int width, int height) QWidget.setGeometry(QRect rect)
这俩函数,同时改变客户区的大小和位置,x和y对应的是x和y坐标。
(2)QWidget包含边框的常用函数
-
获得窗口的大小和位置
QWidget.frameGeometry()
-
设置窗口的位置
QWidget.move(int x, int y) QWidget.move(QPoint point)
-
获得窗口左上角的坐标
QWidget.pos()
案例四、屏幕坐标系统显示
# -*- coding:utf-8 -*-
# @Time:2022/12/7 0007 23:49
# @Author:晚秋拾叶
# @File:qt04_widgetGeometry.py
# Python之PyCharm
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
import sys
app = QApplication(sys.argv)
widget = QWidget()
btn = QPushButton(widget)
btn.setText("按钮")
# 以QWidget左上角为(0,0)点
btn.move(20, 20)
# 不同的操作系统可能对窗口的最小宽度有规定,若设置宽度小于限定值,则会以规定值进行显示
widget.resize(300, 200)
# 以屏幕左上角为(0, 0)点
widget.move(250, 250)
widget.setWindowTitle('PyQt坐标系统')
widget.show()
print("QWidget:")
print("w.x()=%d" % widget.x())
print("w.y()=%d" % widget.y())
print("w.width()=%d" % widget.width())
print("w.height()=%d" % widget.height())
print("QWidget.geometry:")
print("widget.geometry().x()=%d" % widget.geometry().x())
print("widget.geometry().y()=%d" % widget.geometry().y())
print("widget.geometry().width()=%d" % widget.geometry().width())
print("widget.geometry().height()=%d" % widget.geometry().height())
sys.exit(app.exec_())
- 效果如下:
3、创建一个最简单的PyQt5应用
案例五 建立一个主窗口
# -*- coding:utf-8 -*-
# @Time:2022/12/8 0008 0:21
# @Author:晚秋拾叶
# @File:FirstPyQt5.py
# Python之PyCharm
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv) # 定义一个应用程序的实例
win = QWidget() # 实例化一个窗体(基础窗口控件)
win.resize(300, 200) # 改变客户区大小
win.move(250, 150) # 设置窗口的位置
win.setWindowTitle("Hello PyQt5") # 设置win窗口标题
win.show()
sys.exit(app.exec_())
-
代码分析:
- QApplication(sys.argv)里面的参数sys.argv是一个命令行参数列表,是引自C++格式来的。Python脚本可以从Shell中执行,如双击py文件,通过参数选择启动脚本的方式
- 窗口和控件都继承自QWidget类,不给控件指定父对象,那么控件就是一个窗口,就可以setWindowTitle()和setWindowIcon()
- 这里的窗口坐标系统,在各种手机端操作系统,也是适应的。
- sys.exit(app.exec_())用sys的exit命令,让app程序的主循环停止,按规则,此时exec_()返回的是0。
- exec_()函数在PyQt4及以前版本,是因为Python2中exec是Python关键字。所以PyQt5就用了exec_(),到Python3以后,问题解决,但是习惯以及向后兼容,依然用exec_()这个写法。
-
效果如下:
4、为应用设置程序图标
案例六 设置程序图标
# -*- coding:utf-8 -*-
# @Time:2022/12/8 0008 0:40
# @Author:晚秋拾叶
# @File:qt04_QIcon.py
# Python之PyCharm
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget, QApplication
# 1 创建一个名为Icon的窗口类,继承自QWidget类
class Icon(QWidget):
def __init__(self):
super().__init__()
self.initUI()
# 2 初始化窗口
def initUI(self):
self.setGeometry(600, 600, 450, 350)
self.setWindowTitle("程序图标")
self.setWindowIcon(QIcon('./images/头像.ico'))
if __name__ == '__main__':
app = QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())
- 代码分析:
- 上一个例子是面向过程编程,这个例子是面向对象编程。面向对象的情况下,就是属性、方法、类等。这个程序里面就有了Icon类中的构造函数(方法)和继承类QWidget的构造函数。
- 再定义了初始化界面的方法initUI(),里面用了QWidget里面的三种方法setGeometry()、setWindowTitle()、setWindowIcon(),分别用来设置位置大小、标题、图标。
- 效果如下:
5、显示气泡提示信息
案例七 显示气泡提示信息
# -*- coding:utf-8 -*-
# @Time:2022/12/8 0008 0:40
# @Author:晚秋拾叶
# @File:qt04_QIcon.py
# Python之PyCharm
import sys
from PyQt5.QtWidgets import QWidget, QToolTip, QApplication
from PyQt5.QtGui import QFont
class WinForm(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10)) # 设置字体、字号大小
self.setToolTip("这是一个气泡提示") # 接受富文本格式如Html
self.setGeometry(200, 300, 400, 400)
self.setWindowTitle('气泡提示Demo')
if __name__ == '__main__':
app = QApplication(sys.argv)
win = WinForm()
win.show()
sys.exit(app.exec_())
- 代码分析:
- 创建工具提示,需要调用setToolTip()方法,该方法接受富文本格式的参数。
- 效果如下:
文章来源: https://blog.51cto.com/u_15930659/5990469
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报