2016-04-03 10 views
1

Ich verwende ein 4k-Display (3840x2160).tkinter erkennt die Bildschirmauflösung nicht korrekt

from tkinter import * 

root = Tk() 

width = root.winfo_screenwidth() 
height = root.winfo_screenheight() 

print (width, height) 

mainloop() 

Wenn ich diesen Code ausführen die Ausgabe 1536 von 864

ist Könnte jemand erklären, warum dies geschieht und wie ich das Problem beheben kann, Danke.

+0

Scheint [hier] (http://stackoverflow.com/questions/17129144/tk-winfo-returns-wrong-screensize-python-2-7-5-on-windows-8) auch zu passieren. Ich verstehe nicht warum (funktioniert gut auf meiner Maschine). – TigerhawkT3

+0

Ist dies auf Windows? Es könnte ein Flag mit hohem DPI sein, das bedeutet, dass Tk skaliert wird. – patthoyts

+0

Ja, es ist unter Windows 10 64-Bit. Ich glaube, die Standard-DPI für Tkinter ist 72, mein Bildschirm wäre 15,6 Zoll würde 282 DPI haben. –

Antwort

0

Ich lief Code auf meinem Raspberry Pi, und bekam den richtigen Wert für mein Display (das ist kein 4K-Display).

Ich habe nicht die Lösung, aber ich beobachte, dass das Verhältnis zwischen dem erwarteten/beobachteten Antworten

sind
3840/1536 = 2.5 
2160/864 = 2.5 

Vielleicht macht die Bildschirmtreiber für eine 4K-Display eine Differenz zwischen dem realen physikalischen Pixel (3840x2160) und irgendein Konzept von "logischen Pixeln". Der Zweck wäre, zu vermeiden, dass einige Software beispielsweise einen 8-Punkt-Text mit 8 realen physikalischen Pixeln anzeigt, da dies unlesbar wäre.

Ich kann das nicht testen (ich habe die Hardware nicht), es ist nur eine Hypothese. Ich habe vielleicht auch nicht die genaue Terminologie.

(BTW, auf iOS gibt es die Konzepte von Punkten vs Pixel - Sie können nach diesen Begriffen suchen. Auch wenn es Ihr Problem nicht beantwortet, kann es ein ähnliches Problem sein).

Verwandte Themen