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()
获得的则是整一个窗口
如下:
具体可以运行上面代码,点击按钮输出信息,对比数据
设置窗口和应用程序图标
- 使用
QWidget.setWindowIcon
设置窗口图标只在Windows和Linux可用,Mac无法使用 QAplication.setWindowIcon
可以设置应用程序图标和窗口图标(通用),但是如果已经调用过QWidget.setWindowIcon
,那么QAplication.setWindowIcon
只能设置应用程序图标
WindowIcon可以设置应用程序图标和窗口图标(通用),但是如果已经调用过
QWidget.setWindowIcon,那么
QAplication.setWindowIcon`只能设置应用程序图标