Suite

Impossible de supprimer un menu dans le complément Python


J'ai un complément Python avec une bonne quantité de boutons et de menus. J'essaie de supprimer un menu à l'aide de addin_assistant, mais le menu n'est pas supprimé de config.xml. J'ai essayé de supprimer le complément dans ArcMap et de le rajouter, mais cela n'a pas aidé.

Le processus que je fais :

  1. Ouvrez l'assistant de complément Python, accédez à mon dossier de complément.
  2. Trouvez le menu. Faites un clic droit et Supprimer.
  3. Sauver. Cliquez sur OK pour le message d'avertissement de sauvegarde.
  4. Le fichier config.xmlla date du document est modifiée automatiquement lors de l'enregistrement.
  5. Ouvrez le XML et voyez que le menu n'est pas supprimé.

Réflexions rapides : J'ai essayé de redémarrer mon ordinateur. J'ai supprimé les boutons avec succès. Je ne peux pas refaire le complément à chaque fois que je veux supprimer un menu. Mode Personnaliser -> Supprimer pour le menu (dans ArcMap) n'est pas faisable car ce complément sera partagé avec des centaines d'utilisateurs.

Des pensées? S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.

Éditer:

J'ai copié le contenu de mon dossier d'ajout dans un autre dossier. J'ai essayé de supprimer le menu comme je l'ai décrit précédemment et cela n'a pas fonctionné.

J'ai modifié le XML dans Notepad ++ pour supprimer manuellement le menu et exécuté le fichier makeaddin.py, puis supprimé et rajouté le complément dans ArcMap. Cela n'a pas supprimé le menu.

Le double-clic et l'installation du fichier de complément esri ont permis de supprimer le menu depuis que j'ai modifié le XML, mais maintenant, lorsque j'essaie d'accéder au répertoire du complément à l'aide de l'assistant de complément, j'obtiens une fenêtre d'erreur qui dit :

Erreur lors de l'initialisation du complément

nom du complément.menu_remove (qui était le nom de l'ID de menu).

Il semble que addin_assistant s'attend à trouver le menu, mais comme il a été supprimé dans XML, il génère une erreur.

Modifier 2

Je n'ai pas complètement supprimé toutes les lignes requises en XML. L'erreur renvoyée ci-dessus n'apparaît plus. J'ai dû supprimer à la fois la légende de menu pour la catégorie de menu et le refID de menu qui faisait référence à mon ID de menus (menu_remove).

L'édition du XML fonctionne assez bien pour considérer cette réponse. Esri pense que le problème est un bogue ou une limitation avec l'assistant du complément Python. J'ajouterai cette information quand je la recevrai.


C'est une question en deux parties, mais voilà :

  1. Si vous êtes Absolument certain vous faites le processus que vous réclamez à la lettre et l'élément de menu n'est toujours pas supprimé du XML de configuration, vous devrez peut-être aller dans le.XMLfichier et supprimez le menu à la main dans un éditeur de texte comme Notepad++. Vous souhaiterez peut-être signaler un problème avec le support Esri, il peut y avoir un bogue dans l'assistant de complément Python. J'ai essayé d'ajouter/supprimer des menus avec différents types d'éléments et je n'ai eu aucun problème, vous devrez donc peut-être partager le complément avec Esri.
  2. Il existe un moyen documenté de déployer des compléments via un dossier réseau partagé de sorte que chaque fois que vous mettez à jour le.esriaddinLes utilisateurs de fichiers configurés pour utiliser le complément verront vos mises à jour.

Ajoutez facilement des interfaces graphiques à vos programmes et scripts avec PySimpleGUI

Peu de gens exécutent des programmes Python en double-cliquant sur le fichier .py comme s'il s'agissait d'un fichier .exe. Lorsqu'un utilisateur typique (types non programmeurs) double-clique sur un fichier .exe, il s'attend à ce qu'il s'ouvre avec une fenêtre avec laquelle il peut interagir. Bien que les interfaces graphiques, utilisant tkinter, soient possibles à l'aide d'installations Python standard, il est peu probable que de nombreux programmes le fassent.

Et s'il était si facile d'ouvrir un programme Python dans une interface graphique que les débutants complets pourraient le faire ? Est-ce que quelqu'un s'en soucierait ? Quelqu'un l'utiliserait-il ? C'est difficile de répondre car à ce jour ça n'a pas été facile pour créer une interface graphique personnalisée.

Il semble y avoir une lacune dans la possibilité d'ajouter une interface graphique à un programme/script Python. Les débutants complets n'utilisent que la ligne de commande et de nombreux programmeurs avancés ne veulent pas prendre le temps nécessaire pour coder une interface graphique tkinter.


Si votre éditeur ne prend pas en charge le collage dans les emojis directement, vous pouvez utiliser un site Web comme celui-ci pour trouver les Unicodes des emojis à la place. Dans ce cas, la flèche vers l'avant était u25c0 et la flèche vers l'arrière était u25b6 .

A part ça, vous devriez être prêt à partir ! Le message se supprimera après 60 secondes d'inactivité dans ce message (c'est-à-dire que personne ne réagit avec les flèches), mais changez simplement le numéro si vous souhaitez une période plus longue avant la suppression.

Alternativement, vous pouvez ajouter un troisième emoji, comme une croix, qui supprime le message à la demande.


2 réponses 2

Non. L'omission de l'option facultative était auparavant autorisée, mais elle a depuis été supprimée.

UNE version antérieure de ce PEP a permis aux vérificateurs de type d'assumer un type facultatif lorsque la valeur par défaut est Aucun [. ]

Ce n'est plus le comportement recommandé. Les vérificateurs de type devraient s'orienter vers l'exigence que le type facultatif soit rendu explicite.

Certains outils peuvent toujours fournir l'ancien comportement pour la prise en charge héritée. Même si c'est le cas, ne comptez pas sur son soutien à l'avenir.

En particulier, mypy prend toujours en charge l'option implicite par défaut, mais note explicitement que cela peut changer à l'avenir :

Types facultatifs et type Aucun (mypy v0.782)

[. ] Vous pouvez utiliser l'option de ligne de commande --no-implicit-optional pour arrêter de traiter les arguments avec une valeur par défaut None comme ayant une valeur implicite Optional[. ] taper. Il est possible que cela devienne le comportement par défaut à l'avenir.


DÉMONSTRATION DE L'APPLICATION

Les données LiDAR aéroportées multitemporelles acquises dans une zone d'étude de 2,4 km sur 9 km dans le champ de dunes de White Sands au Nouveau-Mexique (États-Unis) sont utilisées pour la démonstration d'application. Le champ de dunes de White Sands est un champ de dunes de gypse et de sable qui se serait produit au milieu de l'Holocène et aurait progressé à travers la déflation des sédiments pluviaux et de playa Pléistocène du lac Otero (Langford, 2003 Kocurek et al., 2007). L'apport actuel de sédiments au champ de dunes de White Sands provient principalement de la déflation du gypse provenant des plages modernes situées au sud-ouest du champ de dunes (Ewing et Kocurek, 2010).

Les figures 4 et 5 montrent des échantillons d'application utilisant deux MNT de résolution 1 m dérivés de données LiDAR acquises le 24 janvier 2009 et le 6 juin 2010, dans la zone d'étude de 2,4 km sur 9 km dans le champ de dunes de White Sands. Les paramètres sont affichés dans la barre d'outils du complément et les légendes sont affichées dans la table des matières sur le côté gauche de la fenêtre ArcMap. En utilisant le complément, les résultats pour 8707 points dans la zone d'étude de 2,4 km sur 9 km (Fig. 5) ont été obtenus en moins de 2 minutes sur des ordinateurs de bureau ordinaires.

Les taux de migration des dunes de la figure 5 sont conformes à certains résultats précédents. Par exemple, Ewing et Kocurek (2010) ont signalé que les taux de migration pour les dunes barchanoïdes et en croissant dans la région varient de 1 à 7 m/an et sont généralement plus rapides dans la section en amont. Comme le montre la figure 5, les dunes en croissant près de la marge ouest au vent ont les taux de migration les plus élevés. Les faces de glissement sont moins développées dans la partie centrale de la zone d'étude, qui présente des zones interdunes relativement plus larges, tandis que des dunes paraboliques relativement stables se forment dans la partie est de la zone d'étude en raison de la présence de végétation. Pour comparer les distances de migration des dunes obtenues à partir du complément SIG et à partir de mesures manuelles, les distances ont été mesurées manuellement à partir de 30 points cibles (targetpoints.shp) aux lignes source (sourcelines.shp). Il convient de noter que la mesure manuelle de la distance de migration des dunes et des directions de migration pourrait être très difficile sans les lignes source et les lignes cibles détectées à partir des faces de glissement des MNT dérivés du LiDAR, en raison du manque de points de contrôle au sol évidents sur les MNT. Avant de prendre les mesures manuelles, la visibilité des points sources (sourcepoints.shp) sur les lignes sources était définie sur invisible afin que l'interprétation visuelle humaine ne soit pas affectée par les points sources générés par ordinateur. Le tableau 1 répertorie les distances de migration des dunes mesurées manuellement et automatiquement à 30 emplacements de points cibles. Les résultats du tableau 1 suggèrent que l'erreur relative des distances de migration mesurées manuellement peut être inférieure à 2 % par rapport aux distances de migration mesurées automatiquement. Cependant, il convient de noter que les mesures manuelles reposent fortement sur l'expérience et le jugement de l'opérateur, et elles prennent beaucoup de temps par rapport au complément SIG, qui peut mesurer et enregistrer automatiquement les taux de migration des dunes et les directions de migration pour plus de 10 000 points en moins de 3 min.


Comment puis-je intégrer Python dans une application Windows ?¶

L'intégration de l'interpréteur Python dans une application Windows peut être résumée comme suit :

Ne construisez _pas_ directement Python dans votre fichier .exe. Sous Windows, Python doit être une DLL pour gérer l'importation de modules qui sont eux-mêmes des DLL. (C'est le premier fait clé non documenté.) Au lieu de cela, un lien vers python NN .dll, il est généralement installé dans C:WindowsSystem . NN est la version Python, un nombre tel que "33" pour Python 3.3.

Vous pouvez créer un lien vers Python de deux manières différentes. La liaison au temps de chargement signifie la liaison contre python NN .lib , tandis que la liaison au moment de l'exécution signifie la liaison avec python NN .dll . (Note générale : python NN .lib est le soi-disant "import lib" correspondant à python NN .dll . Il définit simplement des symboles pour l'éditeur de liens.)

La liaison au moment de l'exécution simplifie grandement les options de liaison, tout se passe au moment de l'exécution. Votre code doit charger python NN .dll à l'aide de la routine Windows LoadLibraryEx(). Le code doit également utiliser des routines d'accès et des données en python NN .dll (c'est-à-dire les API C de Python) en utilisant des pointeurs obtenus par la routine Windows GetProcAddress(). Les macros peuvent rendre l'utilisation de ces pointeurs transparente pour tout code C qui appelle des routines dans l'API C de Python.

Note de Borland : convertir python NN .lib au format OMF en utilisant d'abord Coff2Omf.exe.

Si vous utilisez SWIG, il est facile de créer un "module d'extension" Python qui rendra les données et les méthodes de l'application disponibles pour Python. SWIG gérera à peu près tous les détails sales pour vous. Le résultat est un code C que vous liez dans votre fichier .exe (!) Vous n'êtes _pas_ obligé de créer un fichier DLL, et cela simplifie également la liaison.

SWIG va créer une fonction d'initialisation (une fonction C) dont le nom dépend du nom du module d'extension. Par exemple, si le nom du module est leo, la fonction init sera appelée initleo(). Si vous utilisez des classes d'ombre SWIG, comme vous le devriez, la fonction d'initialisation sera appelée initleoc(). Cela initialise une classe d'assistance principalement cachée utilisée par la classe d'ombre.

La raison pour laquelle vous pouvez lier le code C à l'étape 2 dans votre fichier .exe est que l'appel de la fonction d'initialisation équivaut à importer le module dans Python ! (C'est le deuxième fait clé non documenté.)

En bref, vous pouvez utiliser le code suivant pour initialiser l'interpréteur Python avec votre module d'extension.

Il y a deux problèmes avec l'API C de Python qui deviendront apparents si vous utilisez un compilateur autre que MSVC, le compilateur utilisé pour construire pythonNN.dll.

Problème 1 : Les fonctions dites « de très haut niveau » qui prennent des arguments FILE * ne fonctionneront pas dans un environnement multi-compilateur car la notion de struct FILE de chaque compilateur sera différente. Du point de vue de l'implémentation, ce sont des fonctions de très bas niveau.

Problème 2 : SWIG génère le code suivant lors de la génération de wrappers pour les fonctions void :

Hélas, Py_None est une macro qui se développe en une référence à une structure de données complexe appelée _Py_NoneStruct à l'intérieur de pythonNN.dll. Encore une fois, ce code échouera dans un environnement multi-compilateur. Remplacez ce code par :

Il est peut-être possible d'utiliser la commande %typemap de SWIG pour effectuer le changement automatiquement, même si je n'ai pas réussi à le faire fonctionner (je suis un novice complet de SWIG).

L'utilisation d'un script shell Python pour mettre en place une fenêtre d'interpréteur Python depuis l'intérieur de votre application Windows n'est pas une bonne idée, la fenêtre résultante sera indépendante du système de fenêtrage de votre application. Au lieu de cela, vous (ou la classe wxPythonWindow) devez créer une fenêtre d'interprétation « native ». Il est facile de connecter cette fenêtre à l'interpréteur Python. Vous pouvez rediriger les E/S de Python vers _any_ objet qui prend en charge la lecture et l'écriture, donc tout ce dont vous avez besoin est un objet Python (défini dans votre module d'extension) qui contient les méthodes read() et write().


Lorsque vous ajoutez une page wordpress dans le menu, elle est convertie en lien personnalisé

Tout d'abord, j'ai essayé de poster cette question sur le support wordpress dans l'espoir qu'ils soient au courant de ce problème car c'est le forum officiel de wordpress mais je n'ai reçu aucune réponse de leur part. Alors maintenant, je suis ici pour trouver une solution.

Le problème vient après la mise à jour. Lorsque j'ajoute une page dans le menu (Apparence -> menu) et que je clique sur Enregistrer, elle se convertit en lien personnalisé. Et dans ce lien personnalisé, il n'y a pas de champ pour saisir l'URL ! Cela commence après la mise à jour de wordpress.

Avant la mise à jour, tout allait bien. Le menu que j'ai créé avant la mise à jour est correct mais après la mise à jour, je ne peux pas ajouter de pages (car il se convertit en lien).

Une autre réflexion, lorsque j'ajoute plusieurs pages, c'est-à-dire 2, une page est convertie en lien et les autres restent en sécurité. Cela signifie que si je dois ajouter une seule page dans le menu, je dois sélectionner 2 pages et l'ajouter dans le menu. Lorsque je clique sur enregistrer les modifications, une page convertie en lien (principalement une page en bas de 2 pages ou une seconde à partir de 2 pages) et les autres restent en sécurité. Ensuite, je supprime le lien personnalisé et enregistre à nouveau les modifications, puis j'obtiens ma page de désir dans le menu.

Un autre effet de cette activité est que lorsque j'essaie de mettre à jour le menu, mes pages dans lesquelles j'ai sélectionné un modèle personnalisé, ces pages reviennent au modèle par défaut chaque fois que je clique sur enregistrer les modifications dans le menu Apparence ->. Peut-être que cela se produit à cause d'un problème de menu (convertit la page en lien).

Solution que j'ai essayé : 1. J'ai désactivé tous les plugins

  1. J'ai essayé de passer à vingt seize mais ça n'a pas fonctionné
  2. J'essaye aussi la solution publiée sur cet article. Comme indiqué ci-dessus, j'ai augmenté la mémoire de 1000 à 5000 mais toujours aucun effet.

J'ai beaucoup cherché mais je n'ai trouvé aucune solution qui me convienne. Alors, une idée de ce que je devrais essayer d'autre pour résoudre ce problème?


Découvrez les dernières Traduire documentation sur Lire la doc

Veuillez envoyer des demandes de tirage, très appréciées.

  1. Forkez le référentiel sur GitHub.
  2. Créez une branche hors de master et validez vos modifications.
  3. Exigences d'installation. pip install -r exigences-dev.txt
  4. Installez le pré-commit. pré-commit installer
  5. Exécutez les tests avec py.test -vv -s
  6. Créez une Pull Request avec votre contribution

Vérifier l'installation de conda

Si conda est déjà installé sur votre système, passez à la section Installer l'API. Si vous ne savez pas si conda est installé, vérifiez en entrant la commande suivante dans votre interface de ligne de commande.

Si conda est installé et que son chemin système est enregistré dans la variable d'environnement PATH, le contenu de l'aide de conda doit apparaître dans le terminal. Si le contenu de l'aide s'affiche, passez à la section Installer l'API. Si conda n'est pas reconnu, le résultat lira quelque chose comme : conda introuvable ou non reconnu comme commande. Il est possible que le programme existe sur votre système mais ne soit pas enregistré dans la variable d'environnement PATH. Même si c'est le cas, par souci de cohérence, veuillez continuer avec la section Installer conda, car il est difficile de traiter toutes les configurations système possibles. Tant que le dossier 'miniconda3' n'existe pas dans votre dossier d'accueil, les instructions d'installation de conda suivantes devraient réussir. Pour plus d'informations sur l'emplacement d'installation et l'enregistrement de conda, veuillez consulter les pages d'installation de Miniconda et d'installation d'Anaconda.


3.11. Compiler Python sous Windows¶

Si vous souhaitez compiler CPython vous-même, la première chose à faire est d'obtenir la source. Vous pouvez télécharger la source de la dernière version ou simplement récupérer une nouvelle caisse.

L'arborescence source contient une solution de génération et des fichiers de projet pour Microsoft Visual Studio 2015, qui est le compilateur utilisé pour générer les versions officielles de Python. Ces fichiers se trouvent dans le répertoire PCbuild.

Consultez PCbuild/readme.txt pour obtenir des informations générales sur le processus de génération.

ou « Créer des extensions Python en C/C++ avec SWIG et les compiler avec MinGW gcc sous Windows » ou « Installer l'extension Python avec distutils et sans Microsoft Visual C++ » par Sébastien Sauvage, 2003


Voir la vidéo: Google Sheets and Python (Octobre 2021).