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)로 반환됩니다.
이 두 가지 방법이 다른 결과를 제공하는 이유는 무엇입니까? 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이 하나만 설치되어 있습니까? 아니면 둘 이상이 있을 수도 있습니다. 예를 들어, cygwin과 anaconda를 통해 설치하셨나요?
여러 개가 있는 경우 which python
각 경우에 어떤 버전이 실행되고 있는지 확인하세요.
그래픽 사용자 인터페이스 툴킷
어떤 GUI 툴킷을 사용하고 있습니까? 저는 API에 익숙하지 않습니다 winfo_screenwidth()
. 아마도 이것은 당신이 사용하고 있는 일부 라이브러리/패키지에 의해 제공될 것입니다. 저 가방은 어떤 가방인가요?
Windows 세계/cygwin에 대해서는 잘 모르겠지만 Linux 세계에서는 프로그램이 stdin
터미널인지 확인할 수 있습니다. 두 경우 모두 사용하는 툴킷이 다르게 동작할 수 있습니다. 그렇다면 이 정보는 툴킷 설명서에서 얻을 수 있습니다.
또한 IIRC에는 Windows에서 프로그램을 시작하는 두 가지 방법이 있습니다. 즉, 표준 방식과 GUI 방식이 있습니다 int main()
(이 경우 주요 기능의 이름이 기억나지 않습니다). 일부 통역 언어의 경우 원하는 진입점에 따라 다른 통역사 바이너리가 있었던 것을 기억합니다. GUI는 로 시작하거나 끝날 수 있습니다 w
. 예를 들어 javaw.exe
GUI 버전인 것 같아요 . java.exe
콘솔 버전(Java용)인 것 같아요. Windows에 동등한 Python이 있습니까?