PyQt5中的屏幕坐标系
不管从显示屏屏幕还是程序窗口来看,左上角都为原点(0, 0),向右为x轴正向,向下为y轴正向。
方法 | 含义 |
---|---|
setGeometry(x, y, width, height) | 同时设置位置和尺寸 |
import sys
from PyQt5.QtWidgets import *
class Screen_coordinate(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.resize(500, 500)
btn = QPushButton("按钮", self)
self.setWindowTitle("屏幕坐标系")
btn.clicked.connect(self.btn_click)
def btn_click(self):
# GUI左上角的坐标及尺寸,尺寸不包含标题栏
print(f"widget x: {self.x()}, widget y: {self.y()}, widget width: {self.width()}, widget height: {self.height()}, widget pos: {self.pos()}")
# 窗口左上角的坐标及尺寸,左上角位置不包括标题栏,尺寸不不包含标题栏
print(f"widget geometry x: {self.geometry().x()}, widget geometry y: {self.geometry().y()}, "
f"widget geometry width: {self.geometry().width()}, widget geometry height: {self.geometry().height()},"
f"widget geometry pos: {self.geometry()},")
# 窗口左上角的坐标及尺寸,宽高包括标题栏
print(f"widget frame geometry x: {self.frameGeometry().x()}, widget frame geometry y: {self.frameGeometry().y()}, "
f"widget frame geometry width: {self.frameGeometry().width()}, widget frame geometry height: {self.frameGeometry().height()},"
f" widget frame geometry pos: {self.frameGeometry()}")
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = Screen_coordinate()
widget.show()
sys.exit(app.exec())
result:
widget x: 709, widget y: 209, widget width: 500, widget height: 500, widget pos: PyQt5.QtCore.QPoint(709, 209)
widget geometry x: 710, widget geometry y: 254, widget geometry width: 500, widget geometry height: 500,widget geometry pos: PyQt5.QtCore.QRect(710, 254, 500, 500),
widget frame geometry x: 709, widget frame geometry y: 209, widget frame geometry width: 502, widget frame geometry height: 546, widget frame geometry pos: PyQt5.QtCore.QRect(709, 209, 502, 546)