2016-12-11 2 views
1

最近4Kラップトップを購入し、ウィンドウサイズの問題に遭遇しました。デフォルトのディスプレイサイズでないWindowsでのPythonウィンドウサイズ設定

私は、システムの解像度に基づいてウィンドウのサイズを変更するPythonアプリケーションを作成しました。それは正常に動作します... 4Kラップトップを除いて。

4Kの解像度のため、すべてが非常に小さすぎるため、ここでは機能しません。したがって、Windows 10には、[設定]> [表示]> [テキスト、アプリケーション、およびその他のアイテムのサイズを変更する]の機能があります。ここでの推奨値は、通常の100%ではなく250%です。

これは、ウィンドウのサイズが、4kの表示のために始まるのが巨大であることを意味し、サイズ変更のために実際には250%大きくなります。

Windowsを回避するPythonスクリプトを書く方法はありますか?または、このWindows機能からPythonアプリケーションを除外するには?

+0

唯一のソリューション私は今まで解像度が3840x2160であるかどうかを確認していますが、そうであれば手動で画面に適した小さな割合に設定します。しかし、これは、異なるウィンドウの拡大を持つ他の人には適用されません。 – Aro

答えて

0

Windowsは、DPI対応として宣言されていないアプリケーション(マニフェストまたはアプリケーションのプロパティのいずれか)を拡大/縮小します。

exe(埋め込まれたpythonインスタンスまたはpyinstallerが生成したもの)を使用している場合は、exeを右クリックして[Compatibility]タブに移動し、[Disable DPI scaling]チェックボックスをオンにします。 exeファイルのマニフェストを調整することもできます(ただし、これはexeファイルにコンパイルされることが多く、pyinstallerはそれを別にしていますが、特別なツールを使わずに変更することができます)。あなたがマニフェストにアクセスできる場合は、ここではそれを変更する方法についての情報は次のとおりです。 https://blogs.msdn.microsoft.com/chuckw/2013/09/10/manifest-madness/

あなたがコンパイルされていないPythonスクリプトで作業する場合は、あなたがこれを行うにはctypesでWin32のSetProcessDPIAware関数を呼び出すことができます。

from ctypes import * 
import [your gui framework] 

[your code here] 

if __name__ == '__main__': 
    windll.shcore.SetProcessDpiAwareness(c_int(1)) 
    [rest of your code] 

を使用しているPythonインタプリタが既にインタプリタのマニフェストでDPI認識を宣言している場合、呼び出しは拒否されたHRESULT(0x80070005)をスローする可能性があります。詳細は、https://msdn.microsoft.com/en-us/library/windows/desktop/dn302122(v=vs.85).aspxを参照してください。あなたがDPI対応のアプリケーション(とどのようにそれについてのWindowsを伝えるための)作成の詳細については、MSDNでこれらの記事を見てみたいことがあり

https://msdn.microsoft.com/en-us/library/ms701681(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx

関連する問題