2017-01-20 3 views
0

私は下のリンクのレスポンスを読んで「スクリーンユニット」に走っていましたが、ジム・デニーの反応で「スクリーンユニット」が正確に何を参照しているのか分かりませんでした。私はピクセルではないことを知っています。Python GUI:tkinterの 'スクリーンユニット'とは何ですか?

How do I use Tkinter in Python to create line-wrapped text that fills the width of the window?

+0

を? – eyllanesc

+0

BTW:[Tkinter doc](https://docs.python.org/2/library/tkinter.html) '距離 - 画面距離は、ピクセルまたは絶対距離で指定できます。ピクセルは数値と絶対距離で指定します文字列として、末尾の文字は単位を表し、cはセンチメートル、iはインチ、mはミリメートル、pはプリンタのポイントです。たとえば、3.5インチは「3.5i」と表されます。 – furas

答えて

1

それがフレーズ「スクリーンユニット」を使用していないが、これは非常に簡単に、tkinter python documentationに記載されている: 画面の距離をピクセル単位のいずれかで指定することができます

距離や絶対距離。ピクセルは文字列として数値と絶対距離で与えられ、末尾の文字は単位を表します。cはセンチメートル、iはミリメートル、mはミリメートル、pはプリンタのポイントです。たとえば、3.5インチは「3.5i」と表されます。

「スクリーンユニット」は、tcl/tkドキュメントに記載されています。 Tkinterは組み込みのtcl/tkインタプリタに基づいています。したがって、tcl/tkのドキュメントには定義定義が含まれています。ドキュメントのいくつかでは

あなたはこのような何かを見つけるでしょう

RootXとルーティは、画面単位で指定されている(すなわちTk_GetPixelsに許容可能な任意の形式)

ので、「画面単位」 Tk_GetPixelsに受け入れられるものです。 Tk_GetPixels man pageこれは言う:

これらの手順は引数として画面(をObjPtrまたは列)上の距離の仕様を取得し、整数ピクセルまたは浮動小数点ミリメートルのいずれかの対応する距離を計算します。いずれの場合においても、浮動小数点数の単位を示し、次の文字のいずれかが続くようにをObjPtrまたは文字列は、画面距離を指定:

<なし>数は距離をピクセル単位で指定します。

cこの数字は、画面上の距離をセンチメートルで指定します。

iこの数字は、画面上の距離をインチで指定します。

mこの数値は、画面上の距離をミリメートル単位で指定します。

pこの数字は、画面上のプリンタのポイント(1/72インチ)の距離を指定します。

したがって42(でも、どこでも、あなたは、あなたが"42"(42ピクセル)のようなものを使用することができます "画面の距離" を指定することができます"42c"(42 centemeters)、"42i"(42インチ)、"42m"(42ミリメートル)、または"42p"プリンタポ​​イント)。

これらの値を実際のピクセル値に変換するには、tkはOSによって自動的に設定されるスケーリング係数を使用します(時には間違っていることがあります)。)またはtk scalingを呼び出してください。 tk scaling documentationこの言う:

tk scalingセットと物理単位(例えば、点、インチまたはミリメートル)と画素との間で変換するためのTkによって使用される現在のスケーリングファクタを問い合わせます。 number引数は、ウィンドウの表示上のポイントあたりのピクセル数を指定する浮動小数点数です。 window引数が省略された場合、デフォルトはメインウィンドウになります。 number引数を省略すると、倍率の現在の値が返されます。

"ポイント"は1/72インチに等しい測定単位です。 1.0のスケーリング係数は1点あたり1ピクセルに相当し、標準の72 dpiモニタに相当します。 1.25の倍率は、ポイントあたり1.25ピクセルを意味します。これは、90 dpiモニタの設定です。 72 dpiモニターで倍率を1.25に設定すると、アプリケーションのすべてが通常の1.25倍に表示されます。スケーリング係数の初期値は、アプリケーションの起動時に、インストールされているモニタのプロパティに基づいて設定されますが、いつでも変更できます。スケーリング係数が変更された後の測定値は新しいスケーリング係数を使用しますが、既存のウィジェットが新しいスケーリング係数に合わせて動的にサイズ変更されるかどうかは未定義です。

tk scalingに直接Tkinterのインターフェイスはありませんが、ルートウィンドウのtk.call方法を使用して、それを呼び出すことができます。例えば

あなたが知っていれば、あなたは明示的にこのようなスケーリング係数を設定することができ100dpiのモニターがあります。表示単位はピクセルでないことをあなた言うのはどうすればよい

import tkinter as tk 
... 
root = tk.Tk() 
root.tk.call('tk', 'scaling', '-displayof', '.', 100.0/72.0) 
関連する問題