import sys
'''
QDesktopWidget类提供有关用户桌面的信息,例如其总大小,屏幕数,
每个屏幕的几何形状,以及它们是配置为单独的桌面还是单个虚拟桌面
'''
from PyQt5.QtWidgets import QApplication,QMainWindow,QDesktopWidget
from PyQt5.QtGui import QIcon
class FirstMainWin(QMainWindow):
def __init__(self,parent = None):
super(FirstMainWin,self).__init__(parent)
#设置主窗口标题
self.setWindowTitle('设置主窗口位置')
#设置主窗口大小
self.resize(400,200)
#设置主窗口在屏幕中的位置
self.move(500,100)
#添加状态栏
self.status = self.statusBar()
def center(self):
#screenGeometry()函数提供有关可用屏幕几何的信息
screen = QDesktopWidget().screenGeometry()
#获取窗口坐标系
window = self.geometry()
leftlength = (screen.width() - window.width()) / 2
toplength = (screen.height() - window.height()) / 2
print(f"window.width():{window.width()},window.height():{window.height()}")
print(f"窗口左间距:{leftlength},上间距:{toplength}")
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon(r'./ICON/cartoon2.ico'))
main = FirstMainWin()
main.center()
main.show()
sys.exit(app.exec_())
运行结果:
window.width():400,window.height():200
窗口左间距:440.0,上间距:300.0
几点疑问:
显然这里window.width():400,window.height():200 和 self.resize(400,200)中的尺寸是对应的,也容易推出screen.width():1280,screenheight():800 (16:10)
1.这里的数字单位是什么?
2.440,300是谁的坐标?
3.我屏幕是13.3英寸,16:10长28.64cm,宽17.91cm,和上面的这些坐标什么关系?
第一个问题的答案是像素(pixel),随便补充点知识:
DPI(Dots Per Inch)最初用于衡量打印物上每英寸的点数密度,就是说你的打印机可以在一英寸内打多少个点,也是输出分辨率,针对于输出设备而言的,一般的激光打印机的输出分辨率是300dpi-600dpi,印刷的照排机达到1200dpi-2400dpi,常见的冲印一般在150dpi到300dpi之间。
PPI(Pixels Per Inch)就是计算机屏幕上每英寸可以显示的像素点的数量,即图像的采样率。
举个例子:
13.3英寸的Macbook视网膜屏幕分辨率为2560*1600,PPI为227,因为1inch = 2.54cm,13.3英寸为屏幕对角线长度,屏幕长宽比为16:10,所以可以得到屏幕长为11.276inch,11.276*227=2560.
更详细内容可以参考:
DPI和PPI如何换算?:屏幕分辨率那些事儿