Eu não sei exatamente qual é o problema, mas aqui estão algumas coisas:
Ambiente
Meu primeiro palpite seria uma diferença no ambiente quando você usa o terminal cygwin e quando executa o bash através do arquivo em lote.
Ao executar a partir do terminal cygwin, execute o comando env
para ver o que é o ambiente (já faz um tempo desde que usei o windows, mas suspeito que o env seja parte do cygwin ou seja integrado ao bash).
Em seguida, adicione o mesmo comando ao início do seu script de shell.
#!/bin/sh
export DISPLAY=:0.0
env
python c:/users/<my directories>/<python-file>.py
Compare os dois ambientes e veja se existem diferenças.
pro-tip : você pode gravar a saída do comando env
em um arquivo com env > c:/users/<your directories>/env1.txt
(depois usar env2.txt
do seu script de shell) e compará-los com o comando ferramenta de linha diff
. ou seja, diff env1.txt env2.txt
.
Intérprete
A próxima coisa está relacionada, mas o interpretador python está sendo executado em cada caso. Você tem apenas um python instalado em seu sistema? Ou você pode ter vários. Por exemplo, você instalou através do cygwin e do anaconda?
Se você tiver vários, verifique qual versão está sendo executada com which python
em cada caso.
GUI Toolkit
Qual kit de ferramentas de gui você está usando? Não estou familiarizado com a API winfo_screenwidth()
. Presumivelmente isso é fornecido por alguma biblioteca / pacote que você está usando. Qual pacote é esse?
Não tenho certeza sobre o windows world / cygwin, mas no mundo linux é possível que um programa determine se stdin
é ou não um terminal. O kit de ferramentas que você está usando pode ter um comportamento diferente nos dois casos. Se assim for, a documentação do kit de ferramentas seria onde ir para essa informação.
Além disso, o IIRC tem duas maneiras de iniciar um programa no Windows. Há a maneira padrão, por exemplo, int main()
e a maneira da GUI (não lembro o nome da função principal neste caso). Lembro-me de que, para algumas linguagens interpretadas, existem binários de intérprete diferentes, dependendo de qual ponto de entrada você queria. O gui pode começar ou terminar com w
. Por exemplo, acho que javaw.exe
é a versão gui e java.exe
é a versão do console (para java). Existe um equivalente para python no Windows?