Richiesta di input da parte dell'utente durante l'esecuzione dello strumento di script ArcGIS Python?


9

Voglio richiedere l'input dell'utente dopo aver specificato tutti i parametri per lo strumento di script. Ho visto molti post sul forum e domande su stackexchange a riguardo, e tutti concludono che non è necessario, ma penso che il mio caso sia un'eccezione. Voglio dare all'utente la possibilità di confermare i dati, come ad esempio quante serie di coordinate GPS ci sono. Saranno domande sì / no ("questi dati sono ovviamente errati?"), E il modulo di input dei parametri dello strumento di script non sembra funzionare per questo.

So che il gestore di eventi di Tkinter causa problemi con ArcGIS e altri framwork hanno problemi simili. Una soluzione alternativa che ho riscontrato è che il tuo script chiama un altro script che viene eseguito come processo separato e visualizza la GUI dal secondo processo, ma sembra un po 'troppo hacker.


A quanto pare wxPython fa il lavoro, ma non è incluso in pitone. Devo essere in grado di distribuire questi script senza requisiti aggiuntivi diversi da ArcGIS, quindi non funzionerebbe per me.


Per chiarire, l'uso più importante sarebbe quello di chiedere all'utente quando i miei controlli di convalida del software non riescono a convalidare i dati. Ad esempio, ho un elenco di ID che voglio convalidare, ma il formato non è coerente. Voglio essere in grado di richiedere all'utente una finestra di dialogo sì / no se non riesco a convalidare nel software (ad es. L'ID non corrisponde a uno dei modelli comuni). È possibile che vengano creati nuovi formati ID a mia insaputa.


Un altro esempio: ho un file che contiene, tra le altre cose, una tabella dei tempi di inizio e fine. Voglio convalidare ogni riga della tabella singolarmente e stipare tutti i dati, oltre agli altri controlli, nella finestra di avviso diventerebbe brutto in fretta.


11
Lo sconsiglierei. Gli strumenti di script sono pensati per essere in grado di funzionare senza l'interazione dell'utente una volta premuto "Esegui". Tuttavia, potresti essere in grado di fornire messaggi di avviso / errore più pertinenti utilizzando il codice di convalida .
blah238,

2
Accenni di chiamare un sub-processo come un hacker, ma per quanto riguarda l'input dell'utente, penso che questa potrebbe essere la tua unica opzione se stai usando strumenti di script Python. Il modo in cui lo farei, se dovessi assolutamente avere l'interazione dell'utente con uno strumento di script Python, è chiamando un processo secondario C #. Se ricordo, il codice Python si arresterà e attenderà il completamento del processo secondario prima di continuare. Questo ti dà l'opportunità di includere una quantità illimitata di interazione dell'utente costruita in C #. Tuttavia, non è possibile passare oggetti a C #, quindi è necessario trasferire i dati in forma di stringa.
bluefoot,

Anche se per la cronaca sono d'accordo con blah238
bluefoot il

4
Questo è esattamente ciò a cui serve la validazione negli strumenti di script.
user2856

Ho pensato che la convalida fosse solo per la convalida tramite script e non riesci a ottenere l'input dell'utente? Posso visualizzare le istruzioni sì / no dal validatore o qualcos'altro che avrebbe lo stesso effetto?
user14144

Risposte:


2

Non sono sicuro, questa opzione può funzionare per te o no, ma può darsi che tu possa pensare di creare un'applicazione ac #.

  1. Esegui tutte le interazioni dell'utente e la convalida dei dati tramite questa applicazione.
  2. Dopo aver convalidato tutti i dati, esegui lo script python.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.