Le module pythonaddins comprend des fonctions de prise en charge des compléments Python.
Fonction | Explication | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
OpenDialog({title}, {multiple_selection}, {starting_location}, {button_caption}, {filter}, {filter_label}) | Ouvre une boîte de dialogue permettant de sélectionner un ou plusieurs jeux de données SIG. Cette fonction renvoie le chemin complet du jeu de données choisi. Si plusieurs jeux de données sont choisis, elle renvoie une liste de chemins complets. Aucun filtrage n'a lieu sur les jeux de données en entrée (par exemple, filtrer uniquement les classes d'entités points.
| ||||||||||||
SaveDialog({title}, {name_text}, {starting_location}, {filter}, {filter_label}) | Ouvre une boîte de dialogue permettant d'enregistrer les données. Cette fonction renvoie le chemin complet du jeu de données à enregistrer.
| ||||||||||||
GPToolDialog(toolbox, tool_name) | Ouvre une boîte de dialogue de l'outil de géotraitement.
| ||||||||||||
MessageBox(message, title, {mb_type}) | Afficher une zone de message. Cette fonction renvoie une valeur de chaîne représentant le bouton de message enfoncé.
| ||||||||||||
GetSelectedTOCLayerOrDataFrame() | Renvoie la couche ou le bloc de données sélectionné de la table des matières. | ||||||||||||
GetSelectedCatalogWindowPath() | Renvoie le chemin d'accès complet à l'élément sélectionné dans la fenêtre Catalogue. | ||||||||||||
ProgressDialog() | Renvoie un objet ProgressDialog. L'objet de boîte de dialogue de progression devient automatiquement visible lorsque vous entrez dans le bloc with et disparaît lorsque vous le quittez. Voir l'exemple d'extrait de code ci-dessous. Les propriétés sont les suivantes :
|
Code mb_type | Type de zone de message |
---|---|
0 | OK uniquement |
1 | OK/Annuler |
2 | Annuler/Réessayer/Ignorer |
3 | Oui/Non/Annuler |
4 | Oui/Non |
5 | Réessayer/Annuler |
6 | Annuler/Réessayer/Continuer |
Ce bouton de complément fait appel à la fonction OpenDialog() pour sélectionner un jeu de fichiers de couches et ajoute chaque couche au bloc de données sélectionné.
import arcpy
import pythonaddins
class AddLayers(object):
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
layer_files = pythonaddins.OpenDialog('Select Layers', True, r'C:\GISData', 'Add')
mxd = arcpy.mapping.MapDocument('current')
df = pythonaddins.GetSelectedTOCLayerOrDataFrame()
if not isinstance(df, arcpy.mapping.Layer):
for layer_file in layer_files:
layer = arcpy.mapping.Layer(layer_file)
arcpy.mapping.AddLayer(df, layer)
else:
pythonaddins.MessageBox('Select a data frame', 'INFO', 0)
Ce bouton de complément ouvre un outil de géotraitement.
import arcpy
import pythonaddins
class OpenGPTool(object):
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
pythonaddins.GPToolDialog(r'C:\MyTools\WaterStudy.tbx', 'GroundWaterYield')
Exemple de boîte de dialogue de progression : à tester dans la fenêtre Python dans ArcGIS for Desktop.
import pythonaddins
with pythonaddins.ProgressDialog as dialog:
dialog.title = "Progress Dialog"
dialog.description = "Copying a large feature class."
dialog.animation = "File"
for i in xrange(100):
dialog.progress = i
time.sleep(0.125)
if dialog.cancelled:
raise Exception("Ooops")
Seuls les fichiers texte peuvent être ouverts.
import os
class MyValidator(object):
def __str__(self):
return "Text files(*.txt)"
def __call__(self, filename):
if os.path.isfile(filename) and filename.lower().endswith(".txt"):
return True
return False
filename = pythonaddins.OpenDialog(r"c:\files", filter=MyValidator())