PyQt5:屏幕窗口坐标系与设置图标(三)
坐标系
无论是屏幕还是窗口,坐标系原点都是左上角,这就意味着y轴方向向下为正,x轴向左为正。但是我们获得屏幕和窗口大小时,期间还是有细微的差别。
看以下代码:
import sys
from PyQt5.QtWidgets import (QHBoxLayout,
QMainWindow,
QApplication,
QWidget,
QPushButton)
from PyQt5.QtGui import QIcon
class Qwindow(QMainWindow):
def __init__(self):
super(Qwindow,self).__init__()
# 设置主窗口的标题
self.setWindowTitle("Qwindow")
# 设置窗口尺寸
self.resize(400,300)
self.move(500,500)
# 添加按钮,放在当前窗口上,使用self
self.button1 = QPushButton(QIcon("E:/VS_CODE/vscode_python/人工智能/Lab4/image/black.png"),
'退出程序',
self)
self.button1.move(0,0)
self.button1.resize(100,100)
self.button1.clicked.connect(self.button1_click)
def button1_click(self):
val1 = self.geometry()
val2 = self.frameGeometry()
print("窗口左上角橫坐标 = %d" % self.x())
print("窗口左上角纵坐标 = %d" % self.y())
print("窗口工作区宽度 = %d" % self.width() )
print("窗口工作区高度 = %d" % self.height())
print("窗口工作区左上角橫坐标 = %d" % val1.x())
print("窗口工作区左上角纵坐标 = %d" % val1.y())
print("窗口工作区宽度 = %d" % val1.width() )
print("窗口工作区高度 = %d" % val1.height())
print("整个窗口左上角橫坐标 = %d" % val2.x())
print("整个窗口左上角纵坐标 = %d" % val2.y())
print("整个窗口宽度 = %d" % val2.width() )
print("整个窗口高度 = %d" % val2.height())
if __name__ == "__main__":
# 创建QApplication示例
app = QApplication(sys.argv)
# 设置图标
# app.setWindowIcon(QIcon(path))
# 创建窗口
main = Qwindow()
# 显示窗口
main.show()
# 进入程序主循环,不断扫描检测是否有事件发生
# 同时通过exit函数确保主循环安全结束
sys.exit(app.exec_())
在上面代码中self.x()调用的是QWidget的x()这时显示的是整个窗口左上角的橫坐标,同样self.y()调用的是QWidget的y()这时显示的是整个窗口左上角的纵坐标。
如下:代表的是左上角坐标

在上面代码中self.width()调用的是QWidget的width()这时显示的是工作区宽度,同样self.height()调用的是QWidget的height()这时显示的是工作区高度。
如下:

self.geometry()获得的则是工作区(不包括标题栏)
如下:

self.frameGeometry()获得的则是整一个窗口
如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MwoXHK9f-1649576663427)(C:/Users/admin/AppData/Roaming/Typora/typora-user-images/image-20220410154144094.png)]](https://file.cfanz.cn/uploads/png/2022/04/13/11/Ua51V03e63.png)
具体可以运行上面代码,点击按钮输出信息,对比数据
设置窗口和应用程序图标
- 使用
QWidget.setWindowIcon设置窗口图标只在Windows和Linux可用,Mac无法使用 QAplication.setWindowIcon可以设置应用程序图标和窗口图标(通用),但是如果已经调用过QWidget.setWindowIcon,那么QAplication.setWindowIcon只能设置应用程序图标
WindowIcon可以设置应用程序图标和窗口图标(通用),但是如果已经调用过QWidget.setWindowIcon,那么QAplication.setWindowIcon`只能设置应用程序图标










