Python 2.7 wxPython,数据字符串作为消息

Python 2.7 wxPython,数据字符串作为消息,python-2.7,wxpython,arcgis,Python 2.7,Wxpython,Arcgis,如何使用wxPython获取计算后作为一部分获得的数据字符串,并将其显示为带有“确定/取消”选项的消息或报告?然后由我来保存或取消它。注意:我想使用简单的应用程序(以避免arcmap崩溃),因为此报告生成是arcgis 10.1设置中Pythonadin的一部分。根据ESRI的网站,他们不支持10.1中的wxPython集成: 听起来你可以把它用在某种程度上,但对我来说,这听起来很麻烦。可能有一种方法可以使用其中一个arcgis Python模块显示来自arcgis的对话框。我将对此进行调查和/

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

根据ESRI的网站,他们不支持10.1中的wxPython集成:


听起来你可以把它用在某种程度上,但对我来说,这听起来很麻烦。可能有一种方法可以使用其中一个arcgis Python模块显示来自arcgis的对话框。我将对此进行调查和/或在他们的论坛上提问。

根据ESRI的网站,他们不支持10.1中的wxPython集成:


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

你可以在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子类,所以我们不需要mainloop。但是你可以用一个,我试过了


尽管如此,我认为对你提到的问题有一个更简单的答案。如果您只是想显示某些处理的结果,那么您可以将结果写入文件(或mmap,如果您愿意),并使用subprocess.Popen启动一个脚本,读取文件或mmap,并在wx对话框或框架中显示内容

您可以在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子类,所以我们不需要mainloop。但是你可以用一个,我试过了


尽管如此,我认为对你提到的问题有一个更简单的答案。如果您只是想显示某些处理的结果,那么您可以将结果写入文件(或mmap,如果您愿意),并使用subprocess.Popen启动一个脚本,读取文件或mmap,并在wx对话框或框架中显示内容

它们提供以下有限的对话选项:Tinker是GUI设计的默认选项,但如果单独安装,则可以使用wxPython。arcmap.exe的唯一问题是它与wxPython的事件循环冲突。但simple app可以用作替代,ESRI在本视频中提供了一个示例:当前的Pythonadins仅提供显示消息的选项,而不是信息字符串。它们提供以下有限的对话选项:Tinker是GUI设计的默认选项,但如果单独安装,则可以使用wxPython。arcmap.exe的唯一问题是它与wxPython的事件循环冲突。但简单的应用程序也可以作为替代,ESRI在本视频中提供了一个例子:当前的pythonaddins只提供了显示消息的选项,而不是信息字符串。谢谢Mike。我不仅希望显示结果,还希望选择其中一个选项作为字符串,并将该选择用于行中的下一个处理。为了满足我的需要,我正在深入wxPython。如果你有任何建议,请告诉我。谢谢迈克。我不仅希望显示结果,还希望选择其中一个选项作为字符串,并将该选择用于行中的下一个处理。为了满足我的需要,我正在深入wxPython。如果你有任何建议,请告诉我。