Compare commits
3 Commits
dcdfd2577a
...
d2e21f45b2
Author | SHA1 | Date |
---|---|---|
Tyler Goodlet | d2e21f45b2 | |
Tyler Goodlet | f31bd42a19 | |
Tyler Goodlet | 0136f502d1 |
|
@ -1,22 +1,30 @@
|
||||||
"""
|
"""
|
||||||
Resource list for mucking with DPIs on multiple screens:
|
DPI and info helper script for display metrics.
|
||||||
|
|
||||||
- https://stackoverflow.com/questions/42141354/convert-pixel-size-to-point-size-for-fonts-on-multiple-platforms
|
|
||||||
- https://stackoverflow.com/questions/25761556/qt5-font-rendering-different-on-various-platforms/25929628#25929628
|
|
||||||
- https://doc.qt.io/qt-5/highdpi.html
|
|
||||||
- https://stackoverflow.com/questions/20464814/changing-dpi-scaling-size-of-display-make-qt-applications-font-size-get-rendere
|
|
||||||
- https://stackoverflow.com/a/20465247
|
|
||||||
- https://doc.qt.io/archives/qt-4.8/qfontmetrics.html#width
|
|
||||||
- https://forum.qt.io/topic/54136/how-do-i-get-the-qscreen-my-widget-is-on-qapplication-desktop-screen-returns-a-qwidget-and-qobject_cast-qscreen-returns-null/3
|
|
||||||
- https://forum.qt.io/topic/43625/point-sizes-are-they-reliable/4
|
|
||||||
- https://stackoverflow.com/questions/16561879/what-is-the-difference-between-logicaldpix-and-physicaldpix-in-qt
|
|
||||||
- https://doc.qt.io/qt-5/qguiapplication.html#screenAt
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from pyqtgraph import QtGui
|
# Resource list for mucking with DPIs on multiple screens:
|
||||||
|
# https://stackoverflow.com/questions/42141354/convert-pixel-size-to-point-size-for-fonts-on-multiple-platforms
|
||||||
|
# https://stackoverflow.com/questions/25761556/qt5-font-rendering-different-on-various-platforms/25929628#25929628
|
||||||
|
# https://doc.qt.io/qt-5/highdpi.html
|
||||||
|
# https://stackoverflow.com/questions/20464814/changing-dpi-scaling-size-of-display-make-qt-applications-font-size-get-rendere
|
||||||
|
# https://stackoverflow.com/a/20465247
|
||||||
|
# https://doc.qt.io/archives/qt-4.8/qfontmetrics.html#width
|
||||||
|
# https://forum.qt.io/topic/54136/how-do-i-get-the-qscreen-my-widget-is-on-qapplication-desktop-screen-returns-a-qwidget-and-qobject_cast-qscreen-returns-null/3
|
||||||
|
# https://forum.qt.io/topic/43625/point-sizes-are-they-reliable/4
|
||||||
|
# https://stackoverflow.com/questions/16561879/what-is-the-difference-between-logicaldpix-and-physicaldpix-in-qt
|
||||||
|
# https://doc.qt.io/qt-5/qguiapplication.html#screenAt
|
||||||
|
|
||||||
|
from pyqtgraph import (
|
||||||
|
QtGui,
|
||||||
|
)
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
Qt, QCoreApplication
|
Qt,
|
||||||
|
QCoreApplication,
|
||||||
|
)
|
||||||
|
from PyQt5.QtWidgets import (
|
||||||
|
QWidget,
|
||||||
|
QMainWindow,
|
||||||
|
QApplication,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Proper high DPI scaling is available in Qt >= 5.6.0. This attibute
|
# Proper high DPI scaling is available in Qt >= 5.6.0. This attibute
|
||||||
|
@ -28,55 +36,48 @@ if hasattr(Qt, 'AA_UseHighDpiPixmaps'):
|
||||||
QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
|
QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
|
||||||
|
|
||||||
|
|
||||||
app = QtGui.QApplication([])
|
app = QApplication([])
|
||||||
window = QtGui.QMainWindow()
|
window = QMainWindow()
|
||||||
main_widget = QtGui.QWidget()
|
main_widget = QWidget()
|
||||||
window.setCentralWidget(main_widget)
|
window.setCentralWidget(main_widget)
|
||||||
window.show()
|
window.show()
|
||||||
|
|
||||||
|
# TODO: move widget through multiple displays and auto-detect the pixel
|
||||||
|
# ratio? (probably is gonna require calls to i3ipc on linux)..
|
||||||
pxr = main_widget.devicePixelRatioF()
|
pxr = main_widget.devicePixelRatioF()
|
||||||
|
|
||||||
# screen_num = app.desktop().screenNumber()
|
# TODO: how to detect list of displays from API?
|
||||||
# screen = app.screens()[screen_num]
|
# screen = app.screens()[screen_num]
|
||||||
|
|
||||||
|
|
||||||
|
def ppscreeninfo(screen: QtGui.QScreen) -> None:
|
||||||
|
# screen_num = app.desktop().screenNumber()
|
||||||
|
name = screen.name()
|
||||||
|
size = screen.size()
|
||||||
|
geo = screen.availableGeometry()
|
||||||
|
phydpi = screen.physicalDotsPerInch()
|
||||||
|
logdpi = screen.logicalDotsPerInch()
|
||||||
|
rr = screen.refreshRate()
|
||||||
|
|
||||||
|
print(
|
||||||
|
# f'screen number: {screen_num}\n',
|
||||||
|
f'screen: {name}\n'
|
||||||
|
f' size: {size}\n'
|
||||||
|
f' geometry: {geo}\n'
|
||||||
|
f' logical dpi: {logdpi}\n'
|
||||||
|
f' devicePixelRationF(): {pxr}\n'
|
||||||
|
f' physical dpi: {phydpi}\n'
|
||||||
|
f' refresh rate: {rr}\n'
|
||||||
|
)
|
||||||
|
|
||||||
|
print('-'*50 + '\n')
|
||||||
|
|
||||||
|
|
||||||
screen = app.screenAt(main_widget.geometry().center())
|
screen = app.screenAt(main_widget.geometry().center())
|
||||||
|
ppscreeninfo(screen)
|
||||||
name = screen.name()
|
|
||||||
size = screen.size()
|
|
||||||
geo = screen.availableGeometry()
|
|
||||||
phydpi = screen.physicalDotsPerInch()
|
|
||||||
logdpi = screen.logicalDotsPerInch()
|
|
||||||
|
|
||||||
print(
|
|
||||||
# f'screen number: {screen_num}\n',
|
|
||||||
f'screen name: {name}\n'
|
|
||||||
f'screen size: {size}\n'
|
|
||||||
f'screen geometry: {geo}\n\n'
|
|
||||||
f'devicePixelRationF(): {pxr}\n'
|
|
||||||
f'physical dpi: {phydpi}\n'
|
|
||||||
f'logical dpi: {logdpi}\n'
|
|
||||||
)
|
|
||||||
|
|
||||||
print('-'*50)
|
|
||||||
|
|
||||||
screen = app.primaryScreen()
|
screen = app.primaryScreen()
|
||||||
|
ppscreeninfo(screen)
|
||||||
name = screen.name()
|
|
||||||
size = screen.size()
|
|
||||||
geo = screen.availableGeometry()
|
|
||||||
phydpi = screen.physicalDotsPerInch()
|
|
||||||
logdpi = screen.logicalDotsPerInch()
|
|
||||||
|
|
||||||
print(
|
|
||||||
# f'screen number: {screen_num}\n',
|
|
||||||
f'screen name: {name}\n'
|
|
||||||
f'screen size: {size}\n'
|
|
||||||
f'screen geometry: {geo}\n\n'
|
|
||||||
f'devicePixelRationF(): {pxr}\n'
|
|
||||||
f'physical dpi: {phydpi}\n'
|
|
||||||
f'logical dpi: {logdpi}\n'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# app-wide font
|
# app-wide font
|
||||||
font = QtGui.QFont("Hack")
|
font = QtGui.QFont("Hack")
|
||||||
|
|
Loading…
Reference in New Issue