Python / ctypes Получить размеры экрана для MacOS - PullRequest
0 голосов
/ 08 октября 2019

Я ищу способ получить физические размеры экранов для компьютера под управлением macOS. У меня есть один для Windows, но не Mac, так как у меня нет компьютера Mac. Я почти уверен, что mac не может использовать dll (не эксперт), поэтому все, что вам нужно изменить, - это переменная usermac. Пожалуйста, постарайтесь не использовать Tkinter, так как он использует dpi, определенный Python (я думаю, именно так он и называется), где, если экран масштабируется, например, до 150%, он даст разрешение экрана 150% вместо разрешения экрана 100%. , но если этого нельзя избежать, то это нормально.

Попытка: я не могу попробовать / попробовать один для Mac, так как у меня только компьютеры Windows ...

TLDR: нужен кодопределить физическое разрешение с предпочтительными типами ctypes

import sys
from sys import platform
import tkinter as tk

root = tk.Tk()
wpx = root.winfo_screenwidth()
hpx = root.winfo_screenheight()

if platform == 'win32':
    import ctypes
    userwin = ctypes.windll.user32
    userwin.SetProcessDPIAware()
    [w, h] = [userwin.GetSystemMetrics(0), userwin.GetSystemMetrics(1)]
    cdpi = w*96/wpx
    myappid = 'mycompany.myproduct.subproduct.version'
    ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
elif platform == 'darwin':
    usermac = ctypes.cdll.kernel32
    usermac.SetProcessDPIAware()
    [w, h] = [usermac.GetSystemMetrics(0), usermac.GetSystemMetrics(1)]
    cdpi = w*96/wpx

Ожидание: если платформа darwin, то w и h вернут реальное разрешение компьютера, а не масштабированное

...