使用PyQt5的Python3中的当前屏幕大小

nwnhqdif  于 2023-04-22  发布在  Python
关注(0)|答案(7)|浏览(261)

Qt5 python3中是否有以下代码的替代方案:
https://askubuntu.com/questions/153549/how-to-detect-a-computers-physical-screen-size-in-gtk

from gi.repository import Gdk
s = Gdk.Screen.get_default()
print(s.get_width(), s.get_height())
siotufzp

siotufzp1#

您可以从QApplication获取主屏幕,它返回一个QScreen对象,可以访问许多有用的属性:

import sys
from PyQt5 import QtWidgets

app = QtWidgets.QApplication(sys.argv)

screen = app.primaryScreen()
print('Screen: %s' % screen.name())
size = screen.size()
print('Size: %d x %d' % (size.width(), size.height()))
rect = screen.availableGeometry()
print('Available: %d x %d' % (rect.width(), rect.height()))

请注意,primaryScreen方法是静态的,因此如果您已经在应用程序的其他位置创建了QApplication的示例,则可以轻松地在稍后获得QScreen对象,如下所示:

screen = QApplication.primaryScreen()
r9f1avp5

r9f1avp52#

下面的python3代码允许获取屏幕大小,但是否有QtWidgets.QDesktopWidget().screenGeometry(-1)方法的替代方法:

import sys
from PyQt5 import QtWidgets

def main():
"""
allow you to get size of your current screen
-1 is to precise that it is the current screen
"""
    sizeObject = QtWidgets.QDesktopWidget().screenGeometry(-1)
    print(" Screen size : "  + str(sizeObject.height()) + "x"  + str(sizeObject.width()))   

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    main()
    sys.exit(app.exec_())
kcrjzv8t

kcrjzv8t3#

screenGeometry()的值是您查看的显示器。0是主屏幕,1,2表示安装了其他显示器。
要列出所有可用的显示:

def screen_resolutions():
    for displayNr in range(QtWidgets.QDesktopWidget().screenCount()):
        sizeObject = QtWidgets.QDesktopWidget().screenGeometry(displayNr)
        print("Display: " + str(displayNr) + " Screen size : " + str(sizeObject.height()) + "x" + str(sizeObject.width()))
zaq34kh6

zaq34kh64#

from PyQt5.QtWidgets import QApplication, QWidget
self.desktop = QApplication.desktop()
self.screenRect = self.desktop.screenGeometry()
self.height = self.screenRect.height()
self.width = self.screenRect.width()

你可以在这里看到-https://www.programmersought.com/article/58831562998/

kxxlusnw

kxxlusnw5#

如ekhumoro所述,屏幕信息可以从QApplication对象中获得。然而,QApplication应该只有一个全局示例。它通常在PyQt Gui应用程序的主脚本中设置:

import sys
from PyQt5.QtWidgets import QApplication
def main():
...
   app = QApplication(sys.argv)
   window = MainWindow()
   window.show
    
   sys.exit(app.exec_())

这可能不是您希望使用屏幕属性的地方。
正如Omkar76所指出的,要从其他地方(例如在MainWindow()中)访问全局示例,请使用它的instance()函数。然后,您可以使用它的primaryScreen属性来访问QScreen对象中可用的许多有用信息:

from PyQt5.QtWidgets import QApplication, QMainWindow

class MainWindow(QMainWindow):
   def __init__(self):
       # Window dimensions
       app = QApplication.instance()
       screen = app.primaryScreen()
       geometry = screen.availableGeometry()
       self.setFixedSize(geometry.width() * 0.8, geometry.height() * 0.7)

QDesktopWidget已过时,因此应避免使用。

syqv5f0l

syqv5f0l6#

由于QDesktopWidget已经过时,您将需要使用QApplication的screenAt方法。primaryScreen是静态的,不会考虑应用程序的当前Screen:

from PySide6.QtWidgets import QApplication, QMainWindow

class MainWindow(QMainWindow):
   def __init__(self):
       # Window dimensions
       app = QApplication.instance()
       screen = app.screenAt(self.pos())
       geometry = screen.availableGeometry()
       self.setFixedSize(geometry.width() * 0.8, geometry.height() * 0.7)
ar7v8xwq

ar7v8xwq7#

老实说,我不知道为什么总是这么匆忙地找到pyqt5的答案,但无论如何,我认为这就是你要找的。

print(self.frameSize())

相关问题