Cygwinで手動でコマンドを入力するか、シェルスクリプトを使用してコマンドを実行するかによって、画面解像度(Pythonスクリプトで)が異なります。その理由は理解できません。
私はWindows 8.1 / Cygwin 2.8.2(および起動時にXWinサーバー)/ Python 2.7.13(CygwinとPythonを初めて使用します。詳細については、お知らせください)を実行しています。
Windowsの起動時にCygwinターミナルを開き、export DISPLAY=:0.0
次のように入力するとpython c:/users/<my directories>/<python-file>.py
GUI Pythonスクリプトが正しく実行されます。
(w, h = root.winfo_screenwidth(), root.winfo_screenheight()
たとえば、Pythonスクリプトに表示される場合、画面解像度に対応する出力値は(1920、1200)です。)
ただし、次のWindowsバッチファイルをダブルクリックしてこのプロセスを自動化しようとすると、次のようになります。
c:\cygwin\bin\bash c:/users/<my directories>/<shell-file>.sh
シェルファイルを含む場所
#!/bin/sh
export DISPLAY=:0.0
python c:/users/<my directories>/<python-file>.py
その後、私のGUI Pythonスクリプトが実行されますが、歪んでいる(つまり、画面と比較して大きすぎる)、解像度は(1280、800)として返されます。
この2つの方法が異なる結果をもたらす理由は何ですか? Pythonスクリプトを自動化された方法で(1920、1200)解像度で実行するにはどうすればよいですか?ありがとうございます。
答え1
正確に何が問題なのかはわかりませんが、次のようになります。
環境
最初の推測は、cygwin端末を使用してバッチファイルを介してbashを実行すると、環境が異なることです。
cygwin端末で実行するときにコマンドを実行して、環境が何であるかを確認しますenv
(Windowsを使用しているかどうかはかなりですが、envがcygwinの一部であるか、bashに組み込まれていると思われます)。
次に、シェルスクリプトの先頭に同じコマンドを追加します。
#!/bin/sh
export DISPLAY=:0.0
env
python c:/users/<my directories>/<python-file>.py
両方の環境を比較し、違いがあることを確認してください。
専門家のヒント:コマンドの出力をenv
ファイルに書き込み、env > c:/users/<your directories>/env1.txt
シェルenv2.txt
スクリプトで使用し、コマンドラインツールと比較できますdiff
。つまりdiff env1.txt env2.txt
。
通訳
以下は関連していますが、それぞれの場合にPythonインタプリタが実行される内容です。システムにPythonが1つだけインストールされていますか?または、複数の可能性があります。たとえば、cygwinとanacondaを介してインストールしましたか?
複数がある場合は、各which python
ケースでどのバージョンが実行されているかを確認してください。
グラフィカルユーザーインターフェースツールキット
どのGUIツールキットを使用していますか?私はAPIに精通していませんwinfo_screenwidth()
。おそらく、これはあなたが使用しているいくつかのライブラリ/パッケージによって提供されます。そのバッグはどんなバッグですか?
Windowsの世界/cygwinについてはよくわかりませんが、Linuxの世界ではプログラムが端末であるかどうかをstdin
確認できます。どちらの場合も、使用しているツールキットが異なる動作をする可能性があります。その場合、この情報はツールキットのマニュアルから入手できます。
また、IIRCにはWindowsでプログラムを起動する2つの方法があります。つまり、標準方式とGUI方式がありますint main()
(この場合、主な機能の名前は覚えていません)。一部の通訳言語では、目的のエントリポイントに応じて別の通訳者バイナリがあったことを覚えています。 GUIはで始まるか終了することができますw
。たとえば、javaw.exe
GUIバージョンだと思います。java.exe
コンソールバージョン(Java用)のようです。 Windowsに同等のPythonがありますか?