如何使用 wxPython 获取计算后获得的数据字符串并将其显示为消息或带有 OK/Cancel 选项的报告?然后由我决定是否保存或取消它。注意:我想使用简单的应用程序(以避免 arcmap 崩溃),因为此报告生成是 arcgis 10.1 设置中的 pythonaddin 的一部分。
问问题
344 次
2 回答
3
您可以在 pythonaddin 中使用 wxPython 对话框,但前提是您必须正确设置。您必须导入 wx 并在扩展插件中创建 wx.App,该插件会自动加载并具有启动方法。这将允许在 Arcmap 事件循环开始之前创建 wx.App(或 PySimpleApp)。下面是我公司使用的使用 wxPython 对话框的工作扩展的一部分。
import os, sys, time
import shutil
#do exception handler imports now
##mp = os.path.dirname(__file__)
mp = os.path.dirname(os.path.abspath(__file__))
sys.path.append(mp)
from aiHelpers2 import print2log, ehook
print2log(u'finished standard library imports . . .')
sys.excepthook = ehook
print2log(u'set except hook')
import wx # always load in ext (extension loads before event loop starts)
import arcpy
import pyodbc # need to import here for toolbox scripts (loads before loop)
app = wx.App(0)
class LibLoader1(object):
'''Implementation for wvExten_addin.ext2 (Extension)'''
def __init__(self):
self.enabled = True
def startup(self):
'''
Internally esri-activated addin method, runs when Arcmap starts.
Sets up the environment.
'''
soforth, so-on . . .
我们在这个应用程序中只使用 wx.Dialog 子类,所以我们不需要主循环。但是你可以用一个,我试过了。
综上所述,我认为您提到的问题有一个更简单的答案。如果您只是想显示某些处理的结果,那么您可以将结果写入文件(或 mmap,如果您愿意)并使用 subprocess.Popen 触发读取文件或 mmap 并在 wx 中显示内容的脚本对话框或框架。
于 2013-04-07T14:42:55.757 回答
0
根据 ESRI 的网站,他们不支持 10.1 中的 wxPython 集成:http ://forums.arcgis.com/threads/41809-wxPython-hooked-to-arcmap
听起来你可以让它工作,但对我来说听起来很麻烦。可能有一种方法可以使用其中一个 arcgis Python 模块来显示来自 ArcGIS 的对话框。我会调查和/或在他们的论坛上提问。
于 2013-04-02T14:31:53.007 回答