PySide6获取屏幕分辨率:错误实例化QScreen得异常值,求正确方法
Qt for Python 获取屏幕分辨率的正确方法
你直接实例化QtGui.QScreen()的方式是错误的,QScreen不能通过这种方式创建有效实例,因此得到的是无效几何数据,导致结果异常且每次运行都不同。
正确实现需要先初始化QGuiApplication,再通过应用实例获取屏幕对象:
获取主屏幕分辨率
import sys from PyQt5 import QtGui # 必须先初始化GUI应用 app = QtGui.QGuiApplication(sys.argv) # 获取系统主屏幕 primary_screen = app.primaryScreen() if primary_screen: # geometry()返回包含位置和尺寸的矩形,size()直接提取分辨率宽高 print(f'主屏幕分辨率: {primary_screen.geometry().size()}') print(f'主屏幕完整几何信息: {primary_screen.geometry()}') sys.exit(app.exec_())
获取多屏幕的分辨率信息
如果系统连接了多个显示器,可以遍历所有屏幕:
import sys from PyQt5 import QtGui app = QtGui.QGuiApplication(sys.argv) # 获取所有屏幕对象 screens = app.screens() for idx, screen in enumerate(screens): print(f'屏幕 {idx+1} 分辨率: {screen.geometry().size()}') print(f'屏幕 {idx+1} 完整几何信息: {screen.geometry()}') sys.exit(app.exec_())
说明
geometry()返回的是QRect对象,包含屏幕的位置坐标和尺寸信息;size()方法可以直接提取分辨率的宽和高。- Qt的GUI相关组件必须依赖
QGuiApplication(或QApplication)实例才能正常工作,这是获取有效屏幕信息的前提。
内容的提问来源于stack exchange,提问作者j77h
相关产品推荐
相关产品推荐

