2017-01-24 1 views
1

これは簡単な質問ですが、私はそれにもかかわらず混乱しています。Tkinterで指定されたキャンバスユニットは何ですか?

私は網膜ディスプレイを備えた13インチのMacBook Proを持っています。私のシステムは、システムレポートで2560 x 1600解像度を要求しています。私は、tkinterのCanvasコマンドがピクセル単位で高さと幅を測定したと仮定し、tk documentationもこれを示すように見えます。しかし、次のコードでは幅を1200、tkinterキャンバスの高さを700として、キャンバスを作成して画面をいっぱいにしています。

キャンバスの高さと幅の単位は何ですか?

from tkinter import * 

master = Tk() 

x = 1200 
y = 700 

w = Canvas(master, width=x, height=y) 
w.pack() 


mainloop() 
+0

これは網膜ディスプレイが1ピクセル(プログラムによって定義される)に対して2ドット(2560x1600と測定するもの)を使用する「ピクセル単位のドット」設定でなければなりません。 Wikipedia [https://en.wikipedia.org/wiki/Retina_Display]:_ Apple製品に網膜ディスプレイがある場合、各ユーザーインターフェイスウィジェットは、より小さいピクセルを補うために幅と高さが倍になります。 AppleはこのモードをHiDPI mode_ –

+0

@CiprianTomoiaga Ahと呼んでいます。ありがとう。私はそれについて知らなかった。 – Potato

答えて

5

正確ですが、TkInterはメジャーサイズをピクセル単位で表します。しかし、網膜ディスプレイは、ディスプレイをより鮮明に見せるために、ハードウェア画素のより高い密度を有する。ただし、これらは、プログラムが使用するレンダリングピクセルに1対1で対応していないことに注意してください。 Wikipediaから :

アップル製品は、Retinaディスプレイを有する場合、各ユーザ・インタフェース・ウィジェットが小さい画素を補償するために、幅と高さが倍になります。 AppleはこのモードをHiDPIモードと呼んでいます。

これは、高画素濃度(DPI)をパックするディスプレイでも同じです。 ウィジェットが画面の幅/高さの特定のパーセンテージになるようにしたい場合は、最初にHiDPIディスプレイ上にいるかどうかを検出し、それに応じてウィジェットを拡大縮小する必要があります。 This questionが役に立ちます。

関連する問題