2016-04-03 19 views
1

私は4kディスプレイ(3840x2160)を使用しています。tkinterが画面解像度を正しく認識しない

from tkinter import * 

root = Tk() 

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

print (width, height) 

mainloop() 

私はこのコードを実行すると、出力は864

によって1536でこれが起こって、どのように私はそれを修正することができ、感謝している理由を誰かが説明してもらえます。

+0

[こちら](http://stackoverflow.com/questions/17129144/tk-winfo-returns-wrong-screensize-python-2-7-5-on-windows-8)でも発生するようです。私はなぜ(私のマシン上でうまく動作するのか)理解していない。 – TigerhawkT3

+0

これはWindows版ですか? Tkがスケールされていることを意味するいくつかの高DPI認識フラグかもしれません。 – patthoyts

+0

はい、Windows 10 64ビット版です。私は、TkinterのデフォルトのDPIは72、私の画面は15.6インチ、DPIは282と考えています。 –

答えて

0

私は自分のラズベリーパイのコードを実行し、私のディスプレイ(これは4Kディスプレイではない)の正しい値を得ました。

私は解決策を持っていないが、私はあなたの期待との間の比が/(3840x2160)の答えは

3840/1536 = 2.5 
2160/864 = 2.5 

ある多分4Kディスプレイ用スクリーンドライバは、実際の物理的なピクセル間の違いを観察することを観察し、 「論理ピクセル」の概念。その目的は、例えば8つの実際の物理的なピクセルを有する8ポイントのテキストを表示するために、一部のソフトウェアがそれを読むことができないようにすることを避けることである。

私はこれをテストすることはできません(私はハードウェアを持っていません)、それは仮説に過ぎません。私はまた、正確な用語を持っていないかもしれません。

(現時点では、iOSではポイント対ピクセルの概念があります。これらの用語を検索することはできますが、問題が解決しない場合でも同様の問題です)。

関連する問題