wxPython将数据字符串作为消息

时间:2013-04-02 13:31:09

标签: python-2.7 wxpython arcgis

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

2 个答案:

答案 0 :(得分: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中显示内容对话框或框架。

答案 1 :(得分:0)

根据ESRI的网站,他们不支持10.1中的wxPython集成:http://forums.arcgis.com/threads/41809-wxPython-hooked-to-arcmap

听起来你可以把它用于某种工作,但这对我来说听起来很麻烦。可能有一种方法可以使用arcgis Python模块之一来显示ArcGIS的对话框。我会调查它和/或在他们的论坛上提问。