wxPython を使用して、計算後に一部として取得されたデータ文字列を取得し、OK/キャンセル オプションを使用してメッセージまたはレポートとして表示するにはどうすればよいですか? その後、保存するかキャンセルするかは私次第です。注: このレポート生成は、arcgis 10.1 セットアップ内の pythonaddin の一部であるため、(arcmap のクラッシュを回避するために) シンプルなアプリを使用したいと考えています。
2 に答える
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 に表示するスクリプトを起動します。ダイアログまたはフレーム。
ESRI の Web サイトによると、10.1 での wxPython 統合はサポートされていません: http://forums.arcgis.com/threads/41809-wxPython-hooked-to-arcmap
ある程度機能するように思えますが、私にはかなりバグがあるように思えます。arcgis Python モジュールの 1 つを使用して、ArcGIS からダイアログを表示する方法があるかもしれません。私はそれを調べたり、フォーラムで質問したりします。