มีกรอบมาตรฐานเดียวสำหรับการพัฒนาแอพ Python GUI หรือไม่?


20

มีเฟรมเวิร์กมากมายสำหรับการเขียนแอปพลิเคชัน GUI โดยใช้ Python แต่มีกรอบมาตรฐานที่สำคัญอย่างใดอย่างหนึ่งหรือไม่ ตัวอย่างเช่นเรามี. NET / C # ใน Visual Studio

ฉันคิดในมุมมองอื่นเช่นกัน ในอนาคตถ้าฉันให้สัมภาษณ์งานโปรแกรมเมอร์ Python กรอบงาน GUI จะได้รับการพิจารณาอย่างไร

ฉันยังสงสัยว่าไม่มี IDE ที่รวมภาษา GUI และ Python ตัวเลือกของรสชาตินั้นดี แต่การเลือกแบบเกินความจำเป็น


ไม่ไม่มี "มาตรฐาน" .NET ไม่ได้มาตรฐาน มีไม่ร่างกายมาตรฐานที่ได้เขียนมาตรฐานสำหรับ NET มีมาตรฐานสำหรับ C # คือecma-international.org/publications/standards/Ecma-334.htm บางที "มาตรฐาน" ไม่ใช่สิ่งที่คุณหมายถึง?
S.Lott

@ S.Lott: ขออภัยสำหรับคำที่สับสน ฉันหมายถึงบางสิ่งที่แตกต่าง สำหรับแอปพลิเคชั่น. NET Visual Studio เป็นเครื่องมือ all-i-one ที่ดีที่สุดที่มีตัวสร้าง GUI และสิ่งอื่น ๆ คนไม่ค่อยระวังทางเลือกของ VS.NET ฉันหมายถึงคำที่คล้ายกัน Python IDE ใด ๆ ที่การค้นหาโซลูชัน all-in-one ที่สมบูรณ์สิ้นสุดลง
RPK

คุณถามเกี่ยวกับ IDE (เช่น Visual Studio) หรือไม่ ถ้าเป็นเช่นนั้น "กรอบงาน" เป็นคำที่ผิดในคำถาม โปรดอธิบายสิ่งที่คุณขอ
S.Lott

@ S.Lott: ไม่ฉันไม่ได้ถามเกี่ยวกับ Visual Studio ให้ฉันอธิบาย ยกตัวอย่าง ASP.NET มันเป็นเฟรมเวิร์ก แต่รวมเข้ากับ Visual Studio IDE ได้เป็นอย่างดี คุณมีเครื่องมือทั้งหมดที่มีอยู่ในตารางกลาง Python มีบางอย่างหรือเปล่า?
RPK

Visual studio เป็น IDE == เครื่องมือทั้งหมดสำหรับการพัฒนาในที่เดียว "ฉันไม่ได้ถามเกี่ยวกับ Visual Studio" เป็นสิ่งที่ตรงกันข้ามกับ "คุณมีเครื่องมือทั้งหมดที่มีในตารางกลางมีบางอย่างสำหรับ Python หรือไม่" ไม่ว่าคุณจะถามเกี่ยวกับ IDE (เวอร์ชัน Python ของ Visual Studio) หรือคุณกำลังถามเกี่ยวกับเฟรมเวิร์กนั้น หรือคุณอาจถามถึงทั้งคู่ มันยากมากที่จะเข้าใจว่าคำถามนั้นเกี่ยวกับอะไร โปรดอัปเดตคำถามเพื่อระบุสิ่งที่คุณต้องการอย่างชัดเจน
S.Lott

คำตอบ:


12

คุณสามารถเขียนแอพ Win32 API GUI ใน Python ได้หากคุณต้องการเขียนโค้ด boilerplate ทั้งหมด: โครงการ PyWin32

ส่วนตัวผมชอบwxPython มันเป็นแพลตฟอร์มข้าม (สนับสนุนอย่างเต็มที่ทั้ง Linux และ Windows) และได้รับรอบบางเวลา ... ฐานการสนับสนุนที่ดีและรหัสเอกสาร / ตัวอย่างมากมาย หากคุณต้องการที่จะใช้นี้ใช้เวลาดูที่โบคอนสตรักเตอร์ นั่นคือ IDE สำหรับ wxPython (หรืออาจระบุได้ดีกว่า IDE ที่เขียนและสำหรับ wxPython) มันเป็น RAD IDE เดียวโดยเฉพาะสำหรับ Python ที่ฉันเจอซึ่งเป็นสิ่งที่ควรค่าแก่การกล่าวถึงบันทึกเอดิเตอร์ Qt UI (ตัวแก้ไข UI ของ Qt นั้นใช้ได้ทั้ง C ++ และ PyQT)

ดังที่ Peter กล่าวไว้ในคำตอบของเขา Tk เป็น defacto GUI สำหรับแอพ Python รุ่นเก่า แต่พวกเขาไม่ได้ดูสิ่งที่ผู้ใช้ปลายทางต้องการ มีส่วนขยายบางส่วนที่ทำให้มันดูดีขึ้นเล็กน้อยและให้ความสามารถในการกำหนดลักษณะ UI แต่ถ้าคุณยังคงรักษาแอพ GUI รุ่นเก่าเอาไว้ฉันจะไม่แนะนำให้รบกวนมัน

pyGTK ที่ได้กล่าวไปแล้วจะเป็นอีกทางเลือกที่ดี มันก็เป็นแพลตฟอร์มข้ามแม้ว่าฉันจะไม่ได้มีประสบการณ์ส่วนตัวกับการพัฒนา GTK บน Windows PyQTน่าจะเป็นทางเลือกที่ดีกว่า IMO - ฉันคิดว่า GUI สร้างด้วยไลบรารี Qt ทั้งรูปลักษณ์และฟังก์ชั่นที่เหนือกว่าของ GTK ฉันยังค้นหากลไกเหตุการณ์สัญญาณ / สล็อตของ Qt เพื่อให้ทำงานได้ง่าย YMMV

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


แอพ Tkinter สามารถทำให้ดูเป็นที่ยอมรับได้ซึ่งมักจะแยกไม่ออกจากแอพที่ใช้อยู่ทั่วไปถ้าคุณใช้เวลาในการทำ ฉันจะเห็นด้วยว่า wxPython นั้นดูดีขึ้นโดยที่ไม่มีการปรับแต่ง โดยส่วนตัวฉันยังคงชอบ Tkinter อยู่เพราะมันดูดีพอสำหรับคนส่วนใหญ่และผลผลิตของฉันก็สูงกว่าด้วย wxPython
ไบรอัน Oakley

Tk (Tkinter) ไม่รองรับ Unicode เต็มรูปแบบ (เช่นการสร้างสคริปต์) หากคุณวางแผนที่จะพัฒนาแอปพลิเคชัน l10n / i18n
user.dz

12

Tk เคยเป็นมาตรฐาน แต่เนื้อหานั้นง่ายและน่าเกลียด จากนั้น Qt ก็เริ่มได้รับความนิยม Gtk ก็เป็นไปได้เช่นกันและครอบคลุมรายการโปรดบนแพลตฟอร์ม Linux-ish

แต่คุณพูดถูกไม่มีคำตอบง่ายๆ เป็นทางเลือกที่ค่อนข้างพบได้ทั่วไปในโลกโอเพนซอร์ส


4
ฉันจะเลือก Qt เพียงเพราะดูดีกว่า Gtk
TheLQ

1
+1 สำหรับคำตอบที่โค้งมน Qt นั้นดีและมีประสิทธิภาพและมีสองการเชื่อมโยง (ใบอนุญาตฉลาด)
ChristopheD

เนื้อหาไม่น่าเกลียดการดูบน Windows อีกต่อไป ถึงกระนั้นฉันไม่ชอบรหัสที่คุณต้องเขียนดูเหมือน รหัสน่าเกลียด ในที่สุดรูปร่างหน้าตาดั้งเดิมและสมเหตุสมผลมาก
Warren P

5

ไม่มี 'มาตรฐาน' และฉันเห็นด้วย - ตัวเลือกมากมายเป็นความเจ็บปวด สำหรับเครื่องมือ 'สองทาง' ที่รวมเข้ากับ Python GUI ของ Python ผมก็สงสัยว่าทำไมดูเหมือนจะไม่มีอะไรออกไป - อาจเป็นเพราะมีชุดเครื่องมือ GUI จำนวนมากที่ไม่มีใครต้องการลงทุนใน IDE เพียงหนึ่ง พวกเขา

ต้องบอกว่า PyQt 4.7 กับ P3k จะมอบ GUI ที่ยอดเยี่ยมให้คุณ (รวมถึงคุณสมบัติที่ทรงพลังอื่น ๆ อีกมากมาย) ดูhttp://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "นี่เป็นคู่มืออ้างอิงสำหรับ PyQt 4.8.4 PyQt v4 เป็นชุดของการเชื่อมโยง Python สำหรับ v4 ของ Qt กรอบแอปพลิเคชันจาก Nokia "

PyQt มีการใช้กันอย่างแพร่หลายและมีหนังสือดีๆอยู่ในนั้น: ดู http://www.qtrac.eu/pyqtbook.html "การเขียนโปรแกรม Rapid GUI กับ Python และ Qt" ในกลุ่มอื่น ๆ (หนังสือล้าสมัยไปเล็กน้อย - ต้องมีการอัพเดท สำหรับ P3k)

มีปัญหาร้ายแรง 2 ข้อสำหรับ PyQt:

1) มันมีลักษณะ 'unpythonic' บางอย่างชัดเจนเป็นเพียงเสื้อคลุมบาง ๆ บน libs C ++ Qt แต่ฉันแนะนำ P3k-PyQt 4.7 เพราะบางอย่างได้รับการแก้ไขในแพ็คเกจล่าสุดและยิ่งใหญ่ที่สุด ลองดูโพสต์นี้:

ปัญหาการออกแบบ PyQt

2) สำหรับการใช้งานเชิงพาณิชย์มีค่าธรรมเนียมใบอนุญาตที่สูงชันทั้ง PyQt และ Qt

อีกทางเลือกหนึ่งสำหรับ PyQt คือ PySide จาก Nokia ซึ่งเป็น Piper wrapper สำหรับ Qt ซึ่งเป็นโอเพนซอร์ซทั้งหมด (ซึ่งไม่รวมถึงลิขสิทธิ์ Qt)

การรู้อะไรมากมายเกี่ยวกับ Qt ไม่ใช่สิ่งที่ไม่ดีนักในตลาดและคุณจะได้รับจาก PyQt ดังนั้นฉันจะให้ความสำคัญกับการพิจารณาอย่างจริงจัง (หรือ PySide) หากคุณพยายามที่จะตัดสินใจเลือกแพลตฟอร์ม GUI เดียวเพื่อให้เป็นผู้เชี่ยวชาญ .

โดยไม่คำนึงถึงสิ่งที่คุณเลือกฉันขอแนะนำให้หลีกเลี่ยง tkinter เป็นส่วนใหญ่แม้ว่ามันจะ 'ออกนอกกรอบ' กับ Python เพราะมันมีข้อ จำกัด อย่างมากและ IMO ก็มีรูปลักษณ์และความรู้สึกที่ล้าสมัย

HTH


3

pyGTK อุดมสมบูรณ์ มันใช้งานง่ายและทำให้ GUI ที่ดูไม่ดีครึ่ง


ชุมชนร่ำรวยแค่ไหน? คำตอบนั้นรวดเร็วแค่ไหนในฟอรัม
RPK

1
@RPK ฉันไม่รู้เลยฉันไม่เคยขอความช่วยเหลือทุกอย่างใช้งานง่าย
dan_waterworth

ฉันไม่แน่ใจว่า "อุดมสมบูรณ์" เป็นคำที่ถูกต้อง "การผลิตลูกอ่อนผลไม้ ฯลฯ มากมาย; อุดมสมบูรณ์: ต้นแพร์อุดมสมบูรณ์" อาจจะ "ยอดนิยม" หรือ "ยอดเยี่ยม"
S.Lott

@ S.Lott อุดมสมบูรณ์: "ในทำนองเดียวกันผลิตผลหรือทำงานในความอุดมสมบูรณ์" (คำจำกัดความที่สอง) "การแสดงเพื่อผลิตผลที่ได้ผล; ปราดเปรียว; ในขณะที่สมองที่อุดมสมบูรณ์; ความขัดแย้งที่อุดมสมบูรณ์ของความชั่วร้าย" (พจนานุกรมย่อฉบับย่อของเว็บสเตอร์ (1913 + 1828))
dan_waterworth

อุดมสมบูรณ์เหมือนใน "pyGTK ผลิตแอปพลิเคชั่นมากมาย?" ดูเหมือนจะทำให้เครียด ผู้คนผลิตแอพพลิเคชั่น pyGTK เป็นรากฐานที่ได้รับความนิยมบางทีอาจจะไม่เหมือนผู้สร้าง
S.Lott

0

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

WxWidgets ค่อนข้างดี แต่ไม่มีวิธีง่ายๆในการสร้างการเรียกกลับแบบ Python แบบไดนามิกเหมือนกับ Anjuta สำหรับ Gtk

PyGtk เลิกใช้แล้วในความโปรดปรานของการผูก Gtk3 กับ Python (วิปัสสนา GObject)

PyQt ยังเป็นผู้เล่นใน Python GUI แต่ไม่มีชุมชนขนาดใหญ่

BoaConstructor นั้นได้รับการบำรุงรักษาให้นานขึ้นและจะใช้งานไม่ได้

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