Solicitando a entrada do usuário durante a execução da ferramenta de script do ArcGIS Python?

9

Desejo solicitar a entrada do usuário após todos os parâmetros terem sido especificados para a ferramenta de script. Já vi muitas postagens no fórum e perguntas sobre troca de pilhas sobre isso, e todas concluem que é desnecessário, mas acho que meu caso é uma exceção. Quero dar ao usuário a oportunidade de confirmar dados, como quantos conjuntos de coordenadas GPS existem. Serão perguntas sim / não ("esses dados estão obviamente incorretos?") E o formulário de entrada do parâmetro da ferramenta de script não parece que funcionaria bem para isso.

Eu sei que o manipulador de eventos do Tkinter causa problemas com o ArcGIS, e outros framworks têm problemas semelhantes. Uma solução alternativa que encontrei é fazer com que seu script chame outro script que seja executado como um processo separado e exiba a GUI do segundo processo, mas isso parece um pouco hackeado.


Aparentemente wxPython faz o trabalho, mas não está incluído com python. Eu preciso ser capaz de distribuir esses scripts sem nenhum requisito extra além do ArcGIS, para que não funcione para mim.


Para esclarecer, o uso mais importante seria avisar o usuário quando minhas verificações de validação de software não puderem validar os dados. Por exemplo, tenho uma lista de IDs que quero validar, mas o formato não é consistente. Quero poder solicitar ao usuário uma caixa de diálogo sim / não se não puder validar no software (por exemplo, o ID não corresponde a um dos padrões comuns). É possível que novos formatos de ID sejam criados sem o meu conhecimento.


Outro exemplo: eu tenho um arquivo que contém, entre outras coisas, uma tabela de horários de início e parada. Eu quero validar cada linha da tabela individualmente, e colocar todos esses dados, além das outras verificações, na janela de aviso ficaria feio rapidamente.

user14144
fonte
11
Eu desaconselharia. As ferramentas de script devem ser executadas sem a interação do usuário quando você clica em "Executar". No entanto, você pode fornecer mensagens de aviso / erro mais pertinentes usando o código de validação .
precisa saber é o seguinte
2
Você menciona chamar um subprocesso como hackiano, mas, quanto à entrada de usuários, acho que essa pode ser sua única opção se você estiver usando as ferramentas de script python. A maneira como eu faria isso, se eu absolutamente tivesse que ter interação do usuário com uma ferramenta de script python, é chamando um subprocesso em C #. Se bem me lembro, o código python será interrompido e aguardará a conclusão do subprocesso antes de continuar. Isso oferece a oportunidade de incluir uma quantidade ilimitada de interação do usuário criada em C #. Você não pode passar objetos para o C #, portanto, você teria que obter seus dados em formato de string.
Bluefoot
Embora para o registro Concordo com blah238
Bluefoot
4
É exatamente para isso que serve a validação em ferramentas de script.
usar o seguinte comando
Eu pensei que a validação é apenas para validação com script e não é possível obter a entrada do usuário? Posso exibir solicitações de sim / não do validador ou outra coisa que teria o mesmo efeito?
precisa saber é o seguinte

Respostas:

2

Não tenho certeza, essa opção pode funcionar para você ou não, mas você pode pensar em criar um aplicativo ac #.

  1. Faça toda a interação do usuário e validação de dados através deste aplicativo.
  2. Após validar todos os dados, execute o script python.
Emi
fonte