PyQt中的屏幕信息类QDesktopWidget以及窗口坐标设置

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如何换算?:屏幕分辨率那些事儿

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值