在为脚本工具指定了所有参数之后,我想提示用户输入。我已经看到很多论坛帖子和关于此的stackexchange问题,他们都认为这是不必要的,但是我认为我的情况是个例外。我想让用户有机会确认数据,例如有多少组GPS坐标。它们将是是/否的问题(“此数据是否明显不正确?”),脚本工具参数输入表单似乎不适用于此情况。
我知道Tkinter的事件处理程序会导致ArcGIS问题,而其他framworks也有类似的问题。我发现的一种解决方法是让您的脚本调用另一个作为独立进程运行的脚本,并显示来自第二个进程的GUI,但这似乎有点过于骇人听闻了。
显然wxPython 确实可以工作,但是python不包含它。我需要能够分发这些脚本而没有ArcGIS以外的任何其他要求,因此这对我不起作用。
为了澄清,最重要的用途是在我的软件验证检查无法验证数据时提示用户。例如,我有一个要验证的ID列表,但格式不一致。如果我无法在软件中进行验证(例如,ID与常见模式之一不符),我希望能够用是/否对话框提示用户。在我不知情的情况下,可能会创建新的ID格式。
另一个示例:我有一个文件,其中除其他外,其中包含开始和停止时间的表。我想分别验证表的每一行,并将所有这些数据以及其他检查填充到警告窗口中会很快变得难看。
11
我不建议这样做。一旦点击“运行”,脚本工具将能够在没有用户交互的情况下运行。但是,您可能可以使用验证代码提供更多相关的警告/错误消息。
—
blah238 2013年
您提到将子流程称为hackish,但就获得用户输入而言,如果您坚持使用python脚本工具,我认为这可能是您唯一的选择。如果我绝对必须与python脚本工具进行用户交互,我将通过调用C#子进程来做到这一点。如果我记得的话,python代码将暂停并等待子进程完成后再继续。这使您有机会包含C#中内置的无限数量的用户交互。但是您不能将对象传递给C#,因此必须以字符串形式获取数据。
—
bluefoot
尽管根据记录,我同意blah238
—
bluefoot
这正是脚本工具中验证的目的。
—
user2856 2013年
我以为验证仅用于脚本验证,无法获得用户输入?我可以显示验证器的是/否提示,还是其他会产生相同效果的提示?
—
user14144 2013年