Monitowanie o dane wejściowe użytkownika podczas wykonywania narzędzia skryptowego ArcGIS Python?


9

Chcę zapytać użytkownika o podanie danych po określeniu wszystkich parametrów narzędzia skryptowego. Widziałem wiele postów na forum i pytania dotyczące wymiany stosów na ten temat i wszystkie one doszły do ​​wniosku, że nie jest to konieczne, ale myślę, że mój przypadek jest wyjątkiem. Chcę dać użytkownikowi możliwość potwierdzenia danych, takich jak liczba zestawów współrzędnych GPS. Będą to pytania typu tak / nie („czy te dane są oczywiście niepoprawne?”), A formularz wprowadzania parametrów narzędzia skryptowego nie wydaje się, aby działał dobrze w tym przypadku.

Wiem, że obsługa zdarzeń Tkintera powoduje problemy z ArcGIS, a inne ramy mają podobne problemy. Jednym z obejść, które znalazłem, jest wywołanie przez skrypt innego skryptu, który działa jako osobny proces i wyświetlenie GUI z drugiego procesu, ale wydaje się to trochę zbyt hackerskie.


Widocznie wxPython robi pracę, ale to nie jest dołączony do pytona. Muszę być w stanie rozpowszechniać te skrypty bez żadnych dodatkowych wymagań innych niż ArcGIS, aby to nie działało dla mnie.


Aby to wyjaśnić, najważniejszym zastosowaniem byłoby monitowanie użytkownika, gdy moje testy sprawdzania poprawności oprogramowania nie mogą zweryfikować danych. Na przykład mam listę identyfikatorów, które chcę sprawdzić, ale format nie jest spójny. Chcę móc monitować użytkownika za pomocą okna dialogowego tak / nie, jeśli nie mogę sprawdzić poprawności w oprogramowaniu (np. Identyfikator nie pasuje do jednego z typowych wzorców). Możliwe, że nowe formaty identyfikatorów zostaną utworzone bez mojej wiedzy.


Inny przykład: mam plik zawierający między innymi tabelę czasów rozpoczęcia i zakończenia. Chcę zweryfikować każdy wiersz tabeli osobno, a wtłoczenie wszystkich tych danych oraz innych kontroli do okna ostrzegawczego byłoby brzydko szybkie.


11
Odradzałbym to. Narzędzia skryptowe mają działać bez interakcji użytkownika po naciśnięciu przycisku „Uruchom”. Możesz jednak być w stanie dostarczyć bardziej odpowiednie ostrzeżenia / komunikaty o błędach za pomocą kodu weryfikacyjnego .
blah238,

2
Wspominasz nazywanie podprocesu hackingiem, ale jeśli chodzi o pozyskiwanie informacji od użytkowników, myślę, że może to być twoja jedyna opcja, jeśli trzymasz się narzędzi skryptowych Pythona. Sposób, w jaki to zrobiłbym, gdybym absolutnie musiał mieć interakcję użytkownika z narzędziem skryptowym Pythona, to wywołanie podprocesu C #. Jeśli pamiętam, kod Pythona zatrzyma się i zaczeka na zakończenie podprocesu przed kontynuowaniem. Daje to możliwość włączenia nieograniczonej ilości interakcji użytkownika wbudowanych w C #. Nie możesz jednak przekazywać obiektów do C #, więc musisz uzyskać dane w postaci ciągu.
bluefoot

Chociaż dla przypomnienia zgadzam się z blah238
bluefoot

4
Właśnie do tego służy walidacja w narzędziach skryptowych.
user2856

Myślałem, że sprawdzanie poprawności dotyczy tylko sprawdzania poprawności skryptów i czy nie mogę uzyskać danych od użytkowników? Czy mogę wyświetlić monity tak / nie z walidatora lub coś innego, co miałoby ten sam efekt?
user14144

Odpowiedzi:


2

Nie jestem pewien, czy ta opcja może działać dla Ciebie, czy nie, ale możesz pomyśleć o stworzeniu aplikacji ac #.

  1. Dokonuj wszystkich interakcji użytkownika i sprawdzania poprawności danych za pośrednictwem tej aplikacji.
  2. Po sprawdzeniu poprawności wszystkich danych uruchom skrypt python.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.