3 คะแนน โดย GN⁺ 2023-12-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แปลงโปรแกรมคอนโซล Python ให้เป็นแอปพลิเคชัน GUI ด้วย Gooey

  • Gooey เป็นเครื่องมือสำหรับแปลงโปรแกรมคอนโซล Python 3 ให้เป็นแอปพลิเคชัน GUI ที่ใช้งานง่าย
  • ช่วยให้โปรแกรมใช้งานง่ายและดูดีขึ้นด้วยการมอบ GUI แทน command prompt
  • มีประโยชน์เมื่อสร้างสคริปต์สำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ หรือยูทิลิตีสำหรับงานอย่างการย้ายข้อมูล

วิธีการทำงานของ Gooey

  • Gooey เชื่อมเข้ากับโค้ดโดยเพิ่ม decorator ไปยังเมธอดที่มีการประกาศ argparse
  • ระหว่างรัน จะทำการพาร์สสคริปต์ Python เพื่อดึงอ้างอิง ArgumentParser และประกอบ GUI ขึ้นมา
  • สามารถใช้ GooeyParser เพื่อควบคุมวิดเจ็ตที่แสดงใน GUI ได้ละเอียดมากขึ้น

การทำให้ Gooey รองรับหลายภาษา

  • Gooey สามารถแปลเป็นภาษาต่าง ๆ ได้อย่างง่ายดาย และปัจจุบันมีคำแปลรวมอยู่แล้วมากกว่า 18 ภาษา
  • การเพิ่มการรองรับภาษาใหม่ทำได้ง่ายเพียงเพิ่มคู่คีย์/ค่าในไดเรกทอรี gooey/languages/

การตั้งค่าระดับรวมของ Gooey

  • รูปลักษณ์และความรู้สึกโดยรวมของ Gooey สามารถปรับแต่งได้โดยส่งอาร์กิวเมนต์ให้กับ decorator
  • องค์ประกอบต่าง ๆ เช่น encoding, ภาษา, ขนาดเริ่มต้น, การตั้งค่าฟอนต์ และอื่น ๆ สามารถปรับแต่งได้

การปรับแต่งเลย์เอาต์ของ Gooey

  • Gooey มอบเลย์เอาต์ที่ยืดหยุ่นผ่านการปรับแต่งง่าย ๆ ไม่กี่อย่าง
  • มีตัวเลือกเลย์เอาต์หลากหลาย เช่น การแสดง sidebar หรือการใช้กลุ่มแท็บ

โหมดการแสดงผลของ Gooey

  • Gooey มีโหมดการแสดงผลหลายแบบที่สามารถปรับเลย์เอาต์ให้เหมาะกับประเภทของเนื้อหาและระดับประสบการณ์ของผู้ใช้
  • ผ่านโหมดขั้นสูง, พื้นฐาน และไม่มีการตั้งค่า สามารถมอบ GUI ที่เหมาะกับความต้องการของผู้ใช้ที่หลากหลายได้

เมนูของ Gooey

  • สามารถเพิ่มกลุ่มเมนูและรายการแบบกำหนดเองลงในแถบเมนูของ Gooey ได้
  • รองรับตัวเลือกเมนูหลายประเภทเพื่อแสดงข้อมูลโปรแกรม, กล่องข้อความโต้ตอบ, ลิงก์ และอื่น ๆ

การตรวจสอบแบบไดนามิกของ Gooey

  • ก่อนส่งอินพุตของผู้ใช้ไปยังโปรแกรม Gooey สามารถเลือกรันการตรวจสอบล่วงหน้าเพื่อยืนยันว่าอาร์กิวเมนต์ทั้งหมดผ่านการตรวจสอบ

อีเวนต์วงจรชีวิตและการควบคุม UI ของ Gooey

  • Gooey มี lifecycle hooks ที่ช่วยให้ดำเนินการต่อเนื่องเพิ่มเติมได้เมื่อโปรแกรมรันสำเร็จหรือล้มเหลว และควบคุมสถานะปัจจุบันของ UI ได้

การแสดงความคืบหน้าของ Gooey

  • Gooey สามารถอัปเดตสถานะของแถบความคืบหน้าจากข้อความอัปเดตความคืบหน้าได้
  • สามารถแจ้งความคืบหน้าให้ Gooey ทราบผ่าน regular expression และนิพจน์ประเมินผลแบบกำหนดเอง

การปรับแต่งไอคอนของ Gooey

  • Gooey มีความสามารถในการแทนที่ไอคอนเริ่มต้นด้วยรูปภาพ/ไอคอนแบบกำหนดเอง
  • สามารถระบุไดเรกทอรีรูปภาพแบบกำหนดเองผ่านอาร์กิวเมนต์ image_dir

การแพ็กเกจของ Gooey

  • การแพ็ก Gooey เป็นไฟล์ปฏิบัติการทำได้ง่ายมาก และสามารถใช้ pyinstaller เพื่อบันเดิลแอปพลิเคชันเป็นไฟล์ปฏิบัติการที่พร้อมใช้งานได้

ความเห็นของ GN⁺

ประเด็นสำคัญที่สุดของบทความนี้คือ Gooey สามารถแปลงโปรแกรมคอนโซล Python ให้เป็นแอปพลิเคชัน GUI ได้อย่างง่ายดาย ซึ่งช่วยให้โปรแกรมเป็นมิตรและเข้าถึงง่ายขึ้นสำหรับผู้ใช้ที่ไม่ใช่โปรแกรมเมอร์ และทำให้นักพัฒนาสามารถโฟกัสกับลอจิกได้โดยไม่ต้องกังวลเรื่องส่วนติดต่อผู้ใช้ ตัวเลือกการตั้งค่าและการปรับแต่งที่หลากหลายของ Gooey ยังทำให้มันเป็นทางเลือกที่น่าสนใจสำหรับนักพัฒนา และอาจช่วยลดกำแพงในการเริ่มต้นพัฒนา GUI ได้อย่างมาก

1 ความคิดเห็น

 
GN⁺ 2023-12-10
ความเห็นบน Hacker News
  • คำอธิบายจากผู้พัฒนาเกี่ยวกับโปรเจกต์ Gooey

    • Gooey เป็นโปรเจกต์เก่าที่ตอนเริ่มต้น argparse ถือเป็นตัวเลือกที่มั่นคง
    • ปัจจุบัน Gooey ใช้ JSON และแยกออกจาก argparse
    • argparse ยังคงเป็นอินเทอร์เฟซหลักอยู่ แต่ก็ยังไม่มีทางเลือกอื่นที่เหมาะนัก
    • สามารถใช้ Gooey เพื่อเรียกใช้งานไฟล์ปฏิบัติการใดก็ได้ ไม่ใช่แค่ Python
    • เกี่ยวกับประเด็นที่คอมมิตล่าสุดเกิดขึ้นเมื่อ 2 ปีก่อน ผู้พัฒนาแสดงความเสียดายว่าพออายุมากขึ้นและลำดับความสำคัญเปลี่ยนไป ก็ยิ่งหาเหตุผลมาทำงานซอฟต์แวร์ฟรีได้ยากขึ้น
  • การถกเถียงเกี่ยวกับความสัมพันธ์ระหว่าง Gooey กับ argparse

    • argparse เหมาะกับงานง่าย ๆ แต่มี CLI จำนวนมากที่สร้างบน Click และยังมีไลบรารี CLI ยอดนิยมที่อิงกับ Click ด้วย
    • ยังไม่ชัดเจนว่ารองรับ Click หรือไม่ และถ้าจำกัดอยู่แค่ argparse คำว่า "เกือบทั้งหมด" ก็อาจไม่แม่นยำนัก
    • แม้จะมี issue ที่เปิดค้างอยู่ซึ่งไม่ช่วยสร้างความเชื่อมั่นต่อโปรเจกต์ แต่ตัวโปรเจกต์เองก็มีแนวคิดที่น่าสนใจ
  • มีการให้ลิงก์ไปยังการสนทนาเกี่ยวกับ Gooey ก่อนหน้านี้

    • มีลิงก์แจ้งว่าเคยมีการพูดคุยเกี่ยวกับ Gooey บน Hacker News เมื่อเดือนมิถุนายน 2021 และสิงหาคม 2014
  • ความเห็นที่อยากให้ระบบปฏิบัติการและเชลล์ช่วยรันโปรแกรมได้ดีกว่านี้

    • หวังว่าโปรแกรมจะสื่อสารกันในรูปแบบ JSON/โปรโตคอล เพื่อให้ปรับปรุงโครงสร้างคำสั่งเชลล์หรือ GUI ได้ดีขึ้น
    • ปัจจุบันมีเพียงการส่งออกไฟล์ shell completion มีรูปแบบแฟล็กและไลบรารีสำหรับ parsing ที่หลากหลาย และไม่มี GUI
  • แนะนำเฟรมเวิร์ก Textual

    • แนะนำเฟรมเวิร์ก Textual ที่ช่วยสร้างส่วนติดต่อผู้ใช้ซึ่งทำงานได้ทั้งในเทอร์มินัลและเว็บเบราว์เซอร์ด้วย API ที่เรียบง่ายใน Python
  • คำถามเกี่ยวกับ GUI สำหรับ ffmpeg

    • แสดงความสนใจในเครื่องมือที่นำพารามิเตอร์ของ ffmpeg มาให้ใช้งานผ่าน GUI
  • คำถามเกี่ยวกับวิธีผสานเครื่องมือ CLI ที่คาดหวังการรับอินพุตจากผู้ใช้เข้ากับ Gooey

    • สนใจวิธีเพิ่ม GUI ให้สคริปต์ bisect สำหรับดีบัก game engine เพื่อช่วยให้ผู้ใช้วินิจฉัยปัญหาได้
  • ความสนใจในเครื่องมือที่แปลงจาก GUI เป็น CLI

    • แสดงความหวังว่าถ้ามีเครื่องมือที่ทำกลับกัน คือแปลง GUI เป็น CLI ได้ก็คงดี
  • การกล่าวถึงแนวคิด Naked Objects

    • อธิบายแนวคิด Naked Objects ว่าเป็นไอเดียที่เมื่อกำหนด Java class และ annotation แล้ว ระบบจะสร้าง GUI หรือเว็บฟรอนต์เอนด์ให้อัตโนมัติ
  • ความสงสัยว่า Gooey จะสร้างเว็บแอปได้หรือไม่

    • สงสัยว่า Gooey จะสร้างเว็บแอปที่ไม่ต้องใช้ React หรือ JS ได้หรือไม่
    • มีการกล่าวเปรียบเทียบกับ Python Script Server ซึ่งเป็นเครื่องมือ low-code สำหรับวางเว็บฟรอนต์เอนด์ไว้หน้าโปรแกรม CLI