การนิยามคำอธิบายพารามิเตอร์สำหรับกล่องเครื่องมือ Python ช่วยไหม?


14

ฉันพยายามสร้างกล่องเครื่องมือหลามสำหรับแอปพลิเคชั่น ArcMap ของเรา (เช่น MyTool.pyt)

ฉันจะเห็นว่าข้อความช่วยเหลือถูกกำหนดด้วยแอตทริบิวต์ self.description คลาส

อย่างไรก็ตามเมื่อฉันรันโปรแกรมแล้วคลิกลงในฟิลด์พารามิเตอร์ใด ๆ ข้อความช่วยเหลือ / คำอธิบายจะว่างเปล่า ฉันต้องการให้ฟิลด์คำอธิบายสำหรับแต่ละพารามิเตอร์ สิ่งนี้สำเร็จได้อย่างไร

หลังจากคำตอบบางอย่างฉันเห็นว่าผ่านเมนูบริบท 'คำอธิบายรายการ' คลิกขวามีหลายฟิลด์ที่อาจมีการเติมข้อมูล มีวิธีการ 'pythonic' ทำเช่นนี้? นั่นคือเพียงฝังคุณลักษณะบางอย่างในคลาสไฟล์. pyt

ตัวอย่างเช่นในนิยามกล่องเครื่องมือ. pyt คุณมีคลาสกล่องเครื่องมือ:

import arcpy

class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "My Toolbox"
        self.alias = ""

        # List of tool classes associated with this toolbox
        self.tools = [MyNiceTool]


class MyNiceTool(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "My Tool Class"
        self.description = """
A description that shows up in the help context side pane when the tool is launched.
        """
        self.canRunInBackground = True

    def rest_of_required_methods....

จากสตริง self.description หน้าต่างวิธีใช้ไดอะล็อกเครื่องมือจะแสดงข้อความนี้ อย่างไรก็ตามสิ่งที่ฉันต้องการทำคือมี 'คำอธิบาย' ฝังอยู่ในรหัสของฉันสำหรับแต่ละพารามิเตอร์เช่นกันดังนั้นเมื่อมีการเปิดใช้เครื่องมือและผู้ใช้คลิกลงในเขตข้อมูลพารามิเตอร์คำอธิบายพารามิเตอร์จะปรากฏขึ้น ถ้าฉันจะทำเช่นนี้โดยใช้วิธีการ 'คำอธิบายรายการ' ที่อ้างถึงในการตอบกลับด้านล่างฉันจะแก้ไขช่องโต้ตอบคำอธิบายภายใต้ส่วนไวยากรณ์สำหรับแต่ละพารามิเตอร์ ... ฉันเดา

คำตอบ:


16

ฉันจะเห็นว่าข้อความช่วยเหลือถูกกำหนดด้วยแอตทริบิวต์ self.description คลาส

นี่คือสิ่งที่คุณจะผิด ในหน้าวิธีใช้การบันทึกเอกสารเครื่องมือในกล่องเครื่องมือ Python มีข้อความระบุว่า:

สำหรับกล่องเครื่องมือ Python เอกสารสำหรับกล่องเครื่องมือและเครื่องมือจะถูกเก็บไว้ในไฟล์. xmlที่เชื่อมโยงกับกล่องเครื่องมือและเครื่องมือตามชื่อ ความช่วยเหลือสำหรับแต่ละเครื่องมือจะถูกเก็บไว้ในไฟล์. xml แยกต่างหาก

ซึ่งหมายความว่าคุณไม่สามารถตั้งค่าข้อความช่วยเหลือจากภายในไฟล์. pyt ได้ สิ่งนี้เหมาะสมเมื่อคุณพิจารณาว่าข้อความวิธีใช้ไม่ใช่ ASCII ธรรมดา แต่เป็นข้อความที่มีรูปแบบหลากหลายซึ่งรวมถึงการจัดรูปแบบสัญลักษณ์แสดงหัวข้อย่อยและรูปภาพ

โชคดีที่ Python รองรับการอ่านและการเขียน XMLดังนั้นคุณควรจะสามารถแก้ไขข้อความช่วยเหลือจากสคริปต์แยกต่างหาก


2
ขอบคุณสำหรับลิงก์ไปยังหน้าความช่วยเหลือ 'Documenting' .. ฉันค้นหา แต่ด้วยเหตุผลบางอย่างไม่ได้มาที่หน้านั้น มันจะดีถ้า ESRI สนับสนุนการจัดโครงสร้างใหม่ Text จากนั้นเราสามารถจัดทำเอกสารกล่องเครื่องมือจากรหัสโดยตรงเป็นหนึ่งสามารถใช้สฟิงซ์
จอห์น

"คุณควรแก้ไขข้อความช่วยเหลือจากสคริปต์แยกต่างหากแบบไดนามิก" -> น่าจะถูกใจมาก .. มีใครพัฒนาเครื่องมือนี้บ้างไหม?
Ratnanil

13

คุณสามารถกำหนดข้อความสำหรับแต่ละพารามิเตอร์โดยทำตามขั้นตอนเหล่านี้:

  1. เปิด ArcCatalog และเน้นสคริปต์ในแผนผังแคตตาล็อก
  2. เลือกแท็บคำอธิบาย
  3. คลิกที่ปุ่มแก้ไข
  4. คลิกลูกศรลงถัดจากพารามิเตอร์แต่ละตัวแล้วพิมพ์ข้อความ
  5. สุดท้ายให้บันทึกการแก้ไขโดยคลิกปุ่มบันทึก

เมื่อผู้ใช้คลิกภายในพารามิเตอร์สคริปต์ตอนนี้ผู้ใช้จะเห็นข้อความของคุณ


4
ขอบคุณ .. คุณรู้หรือไม่ว่าข้อมูลนี้ถูกบันทึกไว้ในท้ายที่สุดแล้ว? มันเขียนไปยังไฟล์ xml ที่ดูเหมือนว่าจะถูกสร้างขึ้นในโฟลเดอร์ที่ฉันวางไฟล์. pyt หรือไม่?
จอห์น

11

หากฉันเข้าใจถูกต้องคุณต้องการเพิ่มข้อความช่วยเหลือลงในฟังก์ชั่นของคุณ สามารถทำได้โดยคลิกขวาที่เครื่องมือของคุณจากหน้าต่างกล่องเครื่องมือแล้วคลิกItem descriptionจากนั้นแก้ไขที่ด้านบน มันจะช่วยให้คุณสามารถเพิ่มคำอธิบายสำหรับแต่ละพารามิเตอร์ซึ่งจะแสดงในส่วนความช่วยเหลือเมื่อคลิกพารามิเตอร์

หากคุณอยู่ใน Arcmap 10.0 (อย่างน้อย SP ก่อนหน้านี้) คุณต้องทำสิ่งนี้จากหน้าต่าง ArcCatalog (เรียกดูกล่องเครื่องมือของคุณ) ภายใน Arcmap เพื่อให้มันทำงาน


ขอบคุณสิ่งนี้มีประโยชน์และดูเหมือนจะเป็นทางออกแน่นอน ในความเป็นจริงมันเปิดขึ้นชุดคำถามใหม่ทั้งหมดสำหรับฉัน! ฉันไม่ได้ตระหนักถึงฟิลด์ 'คำอธิบายรายการ' เหล่านี้ทั้งหมดเนื่องจากฉันได้ทำงานกับกล่องเครื่องมือผ่านไฟล์ Python Toolboxs (.pyt) ใน 10.1 เท่านั้น น่าเสียดายที่มันไม่ใช่สิ่งที่ฉันเป็นหลังจากนั้นแม้ว่า ... ดังนั้นฉันจะแก้ไขคำถามของฉันตอนนี้
จอห์น

2

คุณจะต้องคลิกที่ข้อมูลเมตาแก้ไขของเครื่องมือคุณจะเห็นว่าสำหรับแต่ละพารามิเตอร์คุณสามารถแก้ไขข้อความที่จะแสดงได้อย่างง่ายดาย

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.