0

如何使用 wxPython 获取计算后获得的数据字符串并将其显示为消息或带有 OK/Cancel 选项的报告?然后由我决定是否保存或取消它。注意:我想使用简单的应用程序(以避免 arcmap 崩溃),因为此报告生成是 arcgis 10.1 设置中的 pythonaddin 的一部分。

4

2 回答 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 回答