أكثر

لا يمكن إزالة قائمة في الوظيفة الإضافية Python

لا يمكن إزالة قائمة في الوظيفة الإضافية Python


لدي وظيفة إضافية في Python تحتوي على قدر كبير من الأزرار والقوائم. أحاول إزالة قائمة باستخدام addin_assistant ، لكن لا تتم إزالة القائمة من config.xml. لقد حاولت إزالة الوظيفة الإضافية في ArcMap وإعادة إضافتها ، لكن ذلك لم يساعد.

العملية التي أقوم بها:

  1. افتح معالج Python Add-in Wizard ، واستعرض مجلد الوظائف الإضافية.
  2. ابحث عن القائمة. انقر بزر الماوس الأيمن ثم قم بإزالة.
  3. يحفظ. انقر فوق "موافق" لرسالة التحذير الاحتياطية.
  4. ملف config.xmlيتم تعديل تاريخ المستند تلقائيًا عن طريق الحفظ.
  5. افتح XML ولاحظ عدم إزالة القائمة.

أفكار سريعة: لقد حاولت إعادة تشغيل جهاز الكمبيوتر الخاص بي. لقد قمت بإزالة الأزرار بنجاح. لا يمكنني إعادة إنشاء الوظيفة الإضافية في كل مرة أريد فيها إزالة قائمة. وضع التخصيص -> حذف للقائمة (في ArcMap) غير ممكن لأن هذه الوظيفة الإضافية ستتم مشاركتها مع مئات المستخدمين.

أي أفكار؟ يرجى إعلامي إذا كنت بحاجة إلى مزيد من المعلومات.

يحرر:

لقد قمت بنسخ محتويات مجلد الإضافة إلى مجلد مختلف. حاولت إزالة القائمة بالطريقة التي وصفتها سابقًا ولم تنجح.

لقد قمت بتحرير XML في Notepad ++ لإزالة القائمة يدويًا وتشغيل ملف makeaddin.py ، ثم قمت بإزالة الوظيفة الإضافية وإعادة إضافتها في ArcMap. هذا لم يزيل القائمة.

عمل النقر المزدوج وتثبيت ملف esri addin على إزالة القائمة منذ أن قمت بتحرير XML ، ولكن الآن عندما أحاول الوصول إلى دليل الوظيفة الإضافية باستخدام مساعد الوظيفة الإضافية ، أحصل على نافذة خطأ تقول:

خطأ في تهيئة الوظيفة الإضافية

اسم الوظيفة الإضافية (وهو اسم معرف القائمة).

يبدو أن addin_assistant يتوقع العثور على القائمة ، ولكن نظرًا لأنه تمت إزالته في XML ، فإنه يتسبب في حدوث خطأ.

تحرير 2

لم أحذف جميع الأسطر المطلوبة بالكامل في XML. لم يعد الخطأ الذي تم طرحه أعلاه يظهر. اضطررت إلى حذف كل من التسمية التوضيحية للقائمة لفئة القائمة ومرجع القائمة الذي يشير إلى معرف القوائم (menu_remove).

يعمل تحرير XML بشكل جيد بما يكفي للنظر في الإجابة. يعتقد Esri أن المشكلة هي خلل أو قيود في معالج إضافات Python. سأضيف هذه المعلومات عندما أحصل عليها.


هذا سؤال من جزأين ، لكن ها نحن ذا:

  1. إذا كنت كذلك متأكد تماما أنت تقوم بالعملية التي تدعيها بخصوص الرسالة ولا يزال عنصر القائمة غير محذوف من تكوين XML ، فقد تحتاج إلى الانتقال إلى.XMLملف وحذف القائمة يدويًا في محرر نصي مثل Notepad ++. قد ترغب في تقديم مشكلة مع دعم Esri ، قد يكون هناك خطأ في معالج Python للوظيفة الإضافية. لقد حاولت إضافة / إزالة القوائم بأنواع عناصر مختلفة ولم أواجه أي مشكلة ، لذلك قد تحتاج إلى مشاركة الوظيفة الإضافية مع Esri.
  2. هناك طريقة موثقة لنشر الوظائف الإضافية عبر مجلد شبكة مشترك ، لذلك في كل مرة تقوم فيها بتحديث ملف.esriaddinسيرى مستخدمو الملفات الذين تم تكوينهم لاستخدام الوظيفة الإضافية تحديثاتك.

أضف واجهات المستخدم الرسومية إلى البرامج والبرامج النصية الخاصة بك بسهولة باستخدام PySimpleGUI

قليل من الأشخاص يشغلون برامج بايثون بالنقر المزدوج فوق ملف .py كما لو كان ملف exe. عندما ينقر مستخدم نموذجي (من غير المبرمجين) نقرًا مزدوجًا فوق ملف exe. ، فإنهم يتوقعون أن يفتح من خلال نافذة يمكنهم التفاعل معها. في حين أن واجهات المستخدم الرسومية ، باستخدام tkinter ، ممكنة باستخدام تثبيتات Python القياسية ، فمن غير المحتمل أن تقوم العديد من البرامج بذلك.

ماذا لو كان من السهل جدًا فتح برنامج Python في واجهة المستخدم الرسومية بحيث يمكن للمبتدئين الكاملين القيام بذلك؟ هل يهتم أي شخص؟ هل سيستخدمها أحد؟ من الصعب الإجابة لأنه لم يكن كذلك حتى الآن سهل لبناء واجهة المستخدم الرسومية المخصصة.

يبدو أن هناك فجوة في القدرة على إضافة واجهة المستخدم الرسومية إلى برنامج / نص بايثون. يتم ترك المبتدئين الكاملين باستخدام سطر الأوامر فقط ولا يرغب العديد من المبرمجين المتقدمين في قضاء الوقت المطلوب لترميز واجهة المستخدم الرسومية tkinter.


إذا كان المحرر الخاص بك لا يدعم اللصق في الرموز التعبيرية مباشرةً ، فيمكنك استخدام موقع ويب مثل هذا الموقع للعثور على الرموز الموحدة للرموز التعبيرية بدلاً من ذلك. في هذه الحالة ، كان السهم للأمام u25c0 والسهم المتجه للخلف كان u25b6.

بخلاف ذلك ، يجب أن تكون على ما يرام! ستحذف الرسالة نفسها بعد 60 ثانية من عدم النشاط في تلك الرسالة (أي لا يتفاعل أي شخص مع الأسهم) ، ولكن فقط قم بتغيير الرقم إذا كنت تريد فترة أطول قبل الحذف.

بدلاً من ذلك ، يمكنك إضافة رمز تعبيري ثالث ، مثل تقاطع ، والذي يحذف الرسالة عند الطلب.


2 إجابات 2

لا ، كان الحذف الاختياري مسموحًا به سابقًا ، ولكن تمت إزالته منذ ذلك الحين.

أ الإصدار السابق من هذا PEP سمح لمدققات النوع بافتراض نوع اختياري عندما تكون القيمة الافتراضية هي بلا [. ]

لم يعد هذا هو السلوك الموصى به. يجب أن تتحرك مدققات النوع نحو طلب جعل النوع الاختياري واضحًا.

قد تستمر بعض الأدوات في توفير السلوك القديم للدعم القديم. حتى لو كان الأمر كذلك ، فلا تعتمد على دعمه في المستقبل.

على وجه التحديد ، لا يزال mypy يدعم اختياري ضمنيًا بشكل افتراضي ، لكن يلاحظ صراحة أن هذا قد يتغير في المستقبل:

الأنواع الاختيارية ونوع لا شيء (mypy v0.782)

[. ] يمكنك استخدام خيار سطر الأوامر - no-implicit-Optional للتوقف عن معالجة الوسائط ذات القيمة الافتراضية None باعتبارها ذات قيمة اختيارية ضمنية [. ] اكتب. من المحتمل أن يصبح هذا هو السلوك الافتراضي في المستقبل.


مظاهرة التطبيق

تُستخدم بيانات LiDAR المحمولة جواً متعددة الأوقات التي تم الحصول عليها في منطقة دراسة تبلغ مساحتها 2.4 كم × 9 كم في حقل الكثبان الرملية البيضاء في نيو مكسيكو (الولايات المتحدة الأمريكية) لإثبات التطبيق. حقل الكثبان الرملية البيضاء عبارة عن حقل كثبان رمل جبسي يُعتقد أنه حدث خلال منتصف الهولوسين وتطور من خلال انكماش رواسب الأوتيرو في بحيرة بليستوسين وبلايستوسين لانجفورد (Langford، 2003 Kocurek et al.، 2007). مدخلات الرواسب الحالية لحقل الكثبان الرملية البيضاء ناتجة بشكل أساسي عن انكماش الجبس من البلايا الحديثة الواقعة إلى الجنوب الغربي من حقل الكثبان الرملية (Ewing and Kocurek، 2010).

يوضح الشكلان 4 و 5 عينات التطبيق باستخدام اثنين من DEMs بدقة 1 متر مستمدة من بيانات LiDAR التي تم الحصول عليها في 24 يناير 2009 و 6 يونيو 2010 ، في منطقة الدراسة 2.4 كم × 9 كم في حقل الكثبان الرملية البيضاء. تظهر المعلمات على شريط أدوات الوظيفة الإضافية ، ويتم عرض وسائل الإيضاح في جدول المحتويات على الجانب الأيسر من نافذة ArcMap. باستخدام الوظيفة الإضافية ، تم الحصول على نتائج 8707 نقطة في منطقة الدراسة البالغة 2.4 كم في 9 كم (الشكل 5) في أقل من دقيقتين على أجهزة كمبيوتر سطح المكتب العادية.

تتماشى معدلات انتقال الكثبان الرملية في الشكل 5 مع بعض النتائج السابقة. على سبيل المثال ، أفاد Ewing and Kocurek (2010) أن معدلات الترحيل للكثبان الرملية والهلالية في المنطقة تتراوح من 1 إلى 7 م / سنة وعادة ما تكون أسرع في الجزء المعاكس للرياح. كما يتضح من الشكل 5 ، تمتلك الكثبان الهلالية بالقرب من الحافة الغربية للرياح أعلى معدلات الهجرة. تكون الوجوه المنزلق أقل تطورًا في الجزء المركزي من منطقة الدراسة ، والتي تحتوي على مناطق بين الكثبان الأوسع نسبيًا ، بينما تتشكل الكثبان المكافئة المستقرة نسبيًا في الجزء الشرقي من منطقة الدراسة بسبب وجود الغطاء النباتي. لمقارنة مسافات ترحيل الكثبان الرملية التي تم الحصول عليها من الوظيفة الإضافية لنظام المعلومات الجغرافية ومن القياسات اليدوية ، تم قياس المسافات يدويًا من 30 نقطة مستهدفة (targetpoints.shp) إلى خطوط المصدر (sourcelines.shp). وتجدر الإشارة إلى أن القياس اليدوي لمسافة انتقال الكثبان الرملية واتجاهات الترحيل قد يكون صعبًا للغاية بدون خطوط المصدر وخطوط الهدف المكتشفة من الوجوه المنزلق لـ DEMs المشتقة من LiDAR ، بسبب عدم وجود نقاط تحكم أرضية واضحة على DEMs. قبل إجراء القياسات اليدوية ، تم تعيين رؤية نقاط المصدر (sourcepoints.shp) على خطوط المصدر إلى غير مرئية بحيث لا يتأثر التفسير المرئي البشري بنقاط المصدر التي تم إنشاؤها بواسطة الكمبيوتر. يسرد الجدول 1 مسافات ترحيل الكثبان الرملية المقاسة يدويًا وتلقائيًا في 30 موقعًا للنقطة المستهدفة. تشير النتائج الواردة في الجدول 1 إلى أن الخطأ النسبي لمسافات الهجرة المقاسة يدويًا يمكن أن يكون أقل من 2٪ مقارنة بمسافات الهجرة المقاسة تلقائيًا. ومع ذلك ، تجدر الإشارة إلى أن القياسات اليدوية تعتمد بشكل كبير على خبرة وحكم المشغل ، وهي تستغرق وقتًا طويلاً للغاية مقارنة بوظيفة GIS الإضافية ، والتي يمكنها قياس وحفظ معدلات ترحيل الكثبان الرملية واتجاهات الترحيل تلقائيًا لأكثر من 10000 نقطة في أقل من 3 دقائق.


كيف يمكنني تضمين Python في تطبيق Windows؟

يمكن تلخيص تضمين مترجم Python في تطبيق Windows على النحو التالي:

لا تقم بإنشاء Python في ملف exe الخاص بك مباشرةً. في نظام التشغيل Windows ، يجب أن تكون Python عبارة عن ملف DLL للتعامل مع استيراد الوحدات النمطية التي هي في حد ذاتها DLL. (هذه أول حقيقة أساسية غير موثقة.) بدلاً من ذلك ، اربطها ببيثون NN .dll يتم تثبيته عادة في C: Windows System. NN هي نسخة بايثون ، رقم مثل "33" لبيثون 3.3.

يمكنك الارتباط ببايثون بطريقتين مختلفتين. يعني ربط وقت التحميل الارتباط ببيثون NN .lib ، بينما يعني ربط وقت التشغيل الارتباط ببيثون NN .dll. (ملاحظة عامة: python NN .lib هو ما يسمى بـ "استيراد lib" المقابل لـ python NN .dll. إنه يعرّف فقط رموز الرابط.)

يعمل الارتباط في وقت التشغيل على تبسيط خيارات الارتباط إلى حد كبير ، حيث يحدث كل شيء في وقت التشغيل. يجب أن يتم تحميل الكود الخاص بك بيثون NN .dll باستخدام روتين Windows LoadLibraryEx (). يجب أن يستخدم الرمز أيضًا إجراءات الوصول والبيانات في بيثون NN .dll (أي واجهة برمجة تطبيقات لغة البرمجة بلغة Python) باستخدام المؤشرات التي تم الحصول عليها بواسطة روتين GetProcAddress () الخاص بـ Windows. يمكن لوحدات الماكرو أن تجعل استخدام هذه المؤشرات شفافًا لأي كود C يستدعي الإجراءات في واجهة برمجة تطبيقات لغة Python.

ملاحظة بورلاند: تحويل الثعبان NN .lib إلى تنسيق OMF باستخدام Coff2Omf.exe أولاً.

إذا كنت تستخدم SWIG ، فمن السهل إنشاء "وحدة امتداد" Python والتي ستجعل بيانات وطرق التطبيق متاحة ل Python. سوف تتعامل SWIG مع جميع تفاصيل grungy تقريبًا. والنتيجة هي كود C الذي قمت بربطه إلى ملف exe الخاص بك (!) يجب عليك _not_ إنشاء ملف DLL ، وهذا أيضًا يبسط الارتباط.

ستنشئ SWIG وظيفة init (دالة C) يعتمد اسمها على اسم وحدة الامتداد. على سبيل المثال ، إذا كان اسم الوحدة هو leo ، فسيتم استدعاء وظيفة init initleo (). إذا كنت تستخدم فئات الظل SWIG ، كما ينبغي ، فإن وظيفة init تسمى initleoc (). يؤدي هذا إلى تهيئة فئة مساعدة مخفية في الغالب تستخدمها فئة الظل.

السبب في أنه يمكنك ربط كود C في الخطوة 2 بملف exe. هو أن استدعاء وظيفة التهيئة يعادل استيراد الوحدة إلى Python! (هذه هي الحقيقة الرئيسية الثانية غير الموثقة.)

باختصار ، يمكنك استخدام الكود التالي لتهيئة مترجم Python بوحدة الامتداد الخاصة بك.

هناك مشكلتان في واجهة برمجة تطبيقات لغة Python والتي ستصبح واضحة إذا استخدمت مترجمًا غير MSVC ، المجمع المستخدم لبناء pythonNN.dll.

المشكلة الأولى: ما يسمى بوظائف "المستوى العالي جدًا" التي تأخذ وسيطات FILE * لن تعمل في بيئة مترجم متعدد لأن فكرة كل مترجم عن بنية FILE ستكون مختلفة. من وجهة نظر التنفيذ ، فهذه وظائف ذات مستوى منخفض جدًا.

المشكلة الثانية: ينشئ SWIG الكود التالي عند إنشاء أغلفة لإلغاء الوظائف:

للأسف ، Py_None عبارة عن ماكرو يتوسع إلى مرجع لهيكل بيانات معقد يسمى _Py_NoneStruct داخل pythonNN.dll. مرة أخرى ، ستفشل هذه الشفرة في بيئة المترجم المتعدد. استبدل هذا الرمز بما يلي:

قد يكون من الممكن استخدام الأمر٪ typemap الخاص بـ SWIG لإجراء التغيير تلقائيًا ، على الرغم من أنني لم أتمكن من تشغيل هذا (أنا مبتدئ SWIG كامل).

لا يعد استخدام برنامج نصي بلغة Python لوضع نافذة مترجم Python من داخل تطبيق Windows فكرة جيدة لأن النافذة الناتجة ستكون مستقلة عن نظام النوافذ في تطبيقك. بدلاً من ذلك ، يجب عليك (أو فئة wxPythonWindow) إنشاء نافذة مترجم "أصلي". من السهل توصيل تلك النافذة بمترجم بايثون. يمكنك إعادة توجيه i / o في Python إلى _any_ كائن يدعم القراءة والكتابة ، لذلك كل ما تحتاجه هو كائن Python (المحدد في وحدة الامتداد الخاصة بك) الذي يحتوي على أساليب read () و write ().


عند إضافة صفحة ووردبريس في القائمة ، يتم تحويلها إلى رابط مخصص

أولاً حاولت نشر هذا السؤال على دعم ووردبريس على أمل أن يعرفوا عن هذا الموضوع لأنه منتدى رسمي من ووردبريس لكنني لم أحصل على أي رد منهم. لذا أنا هنا الآن لإيجاد حل.

تأتي المشكلة بعد التحديث. عندما أقوم بإضافة صفحة في القائمة (المظهر -> القائمة) والنقر فوق حفظ ثم يتم تحويلها إلى ارتباط مخصص. وفي هذا الرابط المخصص لا يوجد حقل لإدخال عنوان url! يبدأ في الحدوث بعد تحديث وورد.

قبل التحديث كان جيدًا. القائمة التي قمت بإنشائها قبل التحديث جيدة ولكن بعد التحديث لا يمكنني إضافة صفحات (لأنها تتحول إلى رابط).

فكر مرة أخرى ، عندما أقوم بإضافة صفحات متعددة ، أي 2 ، يتم تحويل صفحة واحدة إلى رابط والأخرى تظل آمنة. هذا يعني أنه إذا اضطررت إلى إضافة صفحة واحدة في القائمة ، فلا بد لي من تحديد صفحتين وإضافتهما في القائمة. عندما أنقر فوق حفظ التغييرات ، يتم تحويل صفحة واحدة إلى رابط (غالبًا صفحة في أسفل صفحتين أو صفحة ثانية من صفحتين) وتظل أخرى آمنة. ثم أحذف الرابط المخصص وأحفظ التغييرات مرة أخرى ، ثم أحصل على صفحة رغبتي في القائمة.

تأثير آخر لهذا النشاط هو أنه عندما أحاول تحديث القائمة ، فإن صفحاتي التي حددت فيها نموذجًا مخصصًا ستعود الصفحات إلى القالب الافتراضي عندما أنقر على حفظ التغييرات في قائمة المظهر- & gt. قد يحدث هذا بسبب مشكلة في القائمة (يحول الصفحة إلى رابط).

الحل الذي جربته: 1. لقد عطلت كل المكونات الإضافية

  1. حاولت التحول إلى سن العشرين لكن لم أفلح
  2. أنا أيضا أحاول الحل المنشور في هذه المقالة. وفقًا لاقتراح المنشور أعلاه ، قمت بزيادة الذاكرة إلى 1000 إلى 5000 ولكن لم يكن هناك أي تأثير.

لقد بحثت كثيرًا ولكن لم أجد أي حل يناسبني. إذن أي فكرة ، ماذا يجب أن أحاول حل هذه المشكلة؟


تحقق من الأحدث يترجم الوثائق في Read the Docs

من فضلك أرسل طلبات السحب ، موضع تقدير كبير جدًا.

  1. افرق المستودع على GitHub.
  2. اصنع فرعًا من السيد وقم بإجراء تغييراتك عليه.
  3. متطلبات التثبيت. تثبيت نقطة- r متطلبات- dev.txt
  4. تثبيت الالتزام المسبق. التثبيت المسبق
  5. قم بإجراء الاختبارات باستخدام اختبار py.test -vv -s
  6. إنشاء طلب سحب مع مساهمتك

تحقق من تثبيت كوندا

إذا تم تثبيت conda بالفعل على نظامك ، فانتقل إلى قسم Install API. إذا لم تكن متأكدًا من تثبيت conda ، فتحقق من خلال إدخال الأمر التالي في واجهة سطر الأوامر.

إذا تم تثبيت conda وتم تسجيل مسار نظامه في المتغير البيئي PATH ، فيجب أن تظهر محتويات تعليمات conda في الجهاز. إذا ظهرت محتويات التعليمات ، فانتقل إلى قسم تثبيت API. إذا لم يتم التعرف على conda ، فستقرأ النتيجة شيئًا مثل: لم يتم العثور على conda أو لم يتم التعرف عليه كأمر. من الممكن أن يكون البرنامج موجودًا على نظامك ولكنه غير مسجل في المتغير البيئي PATH. حتى لو كانت هذه هي الحالة ، من أجل التناسق ، يرجى متابعة قسم Install conda ، لأنه من الصعب معالجة جميع تكوينات النظام الممكنة. طالما أن المجلد & # 39miniconda3 & # 39 غير موجود في المجلد الرئيسي الخاص بك ، يجب أن تنجح إرشادات التثبيت التالية. لمزيد من المعلومات حول موقع تثبيت Conda والتسجيل ، يرجى الاطلاع على صفحات تثبيت Miniconda و Anaconda.


3.11. ترجمة لغة Python على نظام Windows¶

إذا كنت تريد تجميع CPython بنفسك ، فإن أول شيء يجب عليك فعله هو الحصول على المصدر. يمكنك تنزيل مصدر الإصدار الأخير أو الحصول على عملية دفع جديدة.

تحتوي شجرة المصدر على حل بناء وملفات مشروع لـ Microsoft Visual Studio 2015 ، وهو المجمع المستخدم لإنشاء إصدارات Python الرسمية. هذه الملفات موجودة في دليل PCbuild.

تحقق من PCbuild / readme.txt للحصول على معلومات عامة حول عملية الإنشاء.

أو "إنشاء امتدادات Python في C / C ++ باستخدام SWIG وتجميعها باستخدام MinGW gcc ضمن Windows" أو "تثبيت امتداد Python مع توزيعات وبدون Microsoft Visual C ++" بواسطة Sébastien Sauvage ، 2003