Apakah ada satu kerangka kerja standar untuk mengembangkan aplikasi Python GUI.?

20

Ada begitu banyak kerangka kerja untuk menulis aplikasi GUI menggunakan Python. Tetapi apakah ada satu kerangka kerja standar utama? Sebagai contoh, kami memiliki bundel .NET / C # di Visual Studio.

Saya juga berpikir dalam perspektif lain. Di masa depan jika saya memberikan wawancara untuk pekerjaan programmer Python, kerangka GUI mana yang akan dipertimbangkan?

Saya juga bertanya-tanya, tidak ada IDE yang mengintegrasikan bahasa GUI dan Python. Pilihan citarasa memang bagus tetapi pilihan berlebihan menjadi gangguan.

RPK
sumber
Tidak. Tidak ada "standar". .NET tidak terstandarisasi. Tidak ada badan standar yang telah menulis standar untuk .NET. Tidak ada standar untuk C #: ecma-international.org/publications/standards/Ecma-334.htm . Mungkin "standar" bukan itu yang Anda maksud?
S.Lott
@ S.Lott: Maaf untuk istilah yang membingungkan itu. Saya berarti sesuatu yang berbeda. Untuk aplikasi .NET, Visual Studio adalah alat all-i-one terbaik yang mencakup pembangun GUI dan hal-hal lainnya. Jarang orang mencari alternatif VS.NET. Maksud saya dalam istilah yang sama. IDE Python mana pun yang mencari solusi lengkap semua-dalam-satu berakhir.
RPK
Apakah Anda bertanya tentang IDE (seperti Visual Studio)? Jika demikian, maka "kerangka kerja" adalah kata yang salah dalam pertanyaan. Harap jelaskan apa yang Anda minta.
S.Lott
@ S.Lott: Tidak, saya tidak bertanya tentang Visual Studio. Izinkan saya mengklarifikasi. Ambil contoh, ASP.NET. Ini adalah kerangka kerja tetapi terintegrasi dengan sangat baik ke dalam Visual Studio IDE. Anda memiliki semua alat yang tersedia di tabel tengah. Apakah ada sesuatu untuk Python?
RPK
Visual studio adalah IDE == semua alat untuk pengembangan di satu tempat. "Saya tidak bertanya tentang Visual Studio" adalah kebalikan dari "Anda memiliki semua alat yang tersedia di tabel tengah. Apakah ada sesuatu untuk Python?". Entah Anda bertanya tentang IDE (versi Python dari Visual Studio) atau Anda bertanya tentang kerangka itu sendiri. Atau, mungkin Anda bertanya tentang keduanya. Sangat sulit untuk mengetahui apa pertanyaannya. Harap perbarui pertanyaan untuk menyatakan dengan sangat jelas apa yang Anda inginkan.
S.Lott

Jawaban:

12

Anda dapat menulis aplikasi Win32 API GUI dengan Python, jika Anda suka menulis semua kode boilerplate: proyek PyWin32

Secara pribadi, saya suka wxPython . Ini adalah cross-platform (didukung penuh pada Linux dan Windows) dan telah ada selama beberapa waktu ... basis dukungan yang layak, dan banyak dokumentasi / contoh kode. Jika Anda ingin menggunakan ini, lihat BoaConstructor . Itu adalah IDE untuk wxPython (atau mungkin lebih baik dinyatakan, sebuah IDE yang ditulis dalam dan untuk wxPython). Ini adalah satu-satunya RAD IDE khusus untuk Python yang saya temui yang bahkan layak disebutkan, simpan Qt UI editor (Qt's UI editor dapat digunakan untuk C ++ dan PyQT).

Seperti yang disebutkan Peter dalam jawabannya, Tk adalah GUI defacto untuk aplikasi Python yang lebih lama, tetapi mereka benar-benar tidak terlihat cantik bagi pengguna akhir. Ada beberapa ekstensi untuk itu yang membuatnya terlihat sedikit lebih baik dan memberikan beberapa kemampuan untuk menata UI, tetapi kecuali Anda mempertahankan aplikasi GUI yang lebih tua, saya tidak akan menyarankan untuk membuatnya repot.

pyGTK, juga sudah disebutkan, akan menjadi pilihan lain yang bagus. Ini juga cross-platform, meskipun saya belum punya pengalaman pribadi dengan pengembangan GTK di Windows. PyQT akan menjadi pilihan yang lebih baik, IMO - Saya pikir GUI yang dibuat dengan perpustakaan Qt terlihat dan berfungsi lebih baik daripada yang dibuat dengan GTK. Saya juga menemukan mekanisme peristiwa sinyal / slot Qt agar lebih mudah untuk dikerjakan. YMMV.

Sebenarnya tidak ada standar apa pun di luar sana untuk pengembangan GUI Python, setidaknya bukan yang pernah saya lihat, tetapi dari sesama pengembang Python yang telah bekerja sama dengan saya selama bertahun-tahun, mereka telah menyarankan kepada saya wxPython dan PyQT lebih dari yang lain toolkit. Saya tidak yakin apakah ada sejumlah besar posisi pengembangan GUI Python di luar sana, jujur. Sebagian besar pengembangan Python yang telah saya lakukan selama bertahun-tahun adalah sisi-server, tetapi itu tidak berarti bahwa tidak ada berbagai bisnis sekarang mencari untuk pergi rute open source untuk aplikasi GUI mereka.

Akan
sumber
Aplikasi Tkinter dapat dibuat agar terlihat cukup dapat diterima, seringkali hampir tidak dapat dibedakan dari aplikasi asli, jika Anda hanya meluangkan waktu untuk melakukannya. Saya akan setuju, bahwa wxPython terlihat lebih baik tanpa tweaker. Secara pribadi saya masih lebih suka Tkinter karena terlihat cukup baik bagi kebanyakan orang, dan produktivitas saya lebih tinggi daripada dengan wxPython.
Bryan Oakley
Tk (Tkinter) tidak mendukung Unicode penuh (mis: pembuatan skrip) jika Anda berencana untuk mengembangkan aplikasi l10n / i18n.
user.dz
12

Tk dulu standar, tapi ini bisa dibilang sederhana dan jelek. Kemudian Qt menjadi sangat populer. Gtk juga memungkinkan, dan itu mencakup favorit pada platform Linux-ish.

Tapi Anda benar, benar-benar tidak ada jawaban. Lagipula, over-choice cukup umum di dunia open source.

Peter Eisentraut
sumber
4
Saya akan memilih Qt hanya karena terlihat lebih bagus daripada Gtk
TheLQ
1
+1 untuk jawaban yang lengkap. Qt bagus dan kuat, dan dua binding (lisensi-bijaksana) tersedia.
ChristopheD
Ini bisa dibilang tidak lagi jelek MELIHAT Windows. Namun, saya tidak suka kode apa yang harus Anda tulis. Kode jelek. Penampilan, murni asli, dan cukup masuk akal, akhirnya.
Warren P
5

Tidak ada 'standar' dan saya setuju - kebanyakan pilihan adalah menyakitkan. Adapun IDE 'alat dua arah' terintegrasi untuk Python GUI, saya juga bertanya-tanya mengapa sepertinya tidak ada apa-apa di luar sana - mungkin karena ada begitu banyak toolkit GUI yang tidak seorang pun ingin berinvestasi dalam IDE hanya untuk satu mereka.

Karena itu, PyQt 4.7 dengan P3k akan memberi Anda GUI yang luar biasa (serta banyak fitur canggih lainnya). Lihat http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Ini adalah panduan referensi untuk PyQt 4.8.4. PyQt v4 adalah seperangkat pengikat Python untuk v4 dari Qt kerangka kerja aplikasi dari Nokia. "

PyQt sedang digunakan secara luas dan ada beberapa buku bagus di dalamnya: lihat http://www.qtrac.eu/pyqtbook.html antara lain "Pemrograman GUI cepat dengan Python dan Qt", antara lain (buku sudah ketinggalan jaman - perlu diperbarui - perlu diperbarui untuk P3k).

Ada 2 masalah serius dengan PyQt:

1) Ini memiliki beberapa karakteristik 'unpythonic', menjadi pembungkus tipis pada lib C ++ Qt. Tapi saya merekomendasikan P3k-PyQt 4.7 karena beberapa yang telah dibahas dalam paket 'terbaru dan terhebat'. Lihat pos ini:

Masalah desain PyQt

2) Untuk penggunaan komersial ada biaya lisensi yang cukup curam, baik untuk PyQt dan Qt.

Alternatif lain yang muncul untuk PyQt adalah PySide dari Nokia, pembungkus Python lain untuk Qt yang sepenuhnya open source (yang tidak termasuk lisensi Qt).

Mengetahui banyak tentang Qt bukanlah hal yang buruk dari sisi pasar, dan Anda akan mendapatkannya dari PyQt, jadi saya akan memberikannya (atau PySide) pertimbangan serius jika Anda mencoba memutuskan satu platform GUI untuk menjadi ahli dalam .

Terlepas dari apa yang Anda pilih, saya sarankan menghindari tkinter untuk sebagian besar, meskipun itu 'di luar kotak' dengan Python, karena itu sangat terbatas, dan IMO memiliki tampilan dan nuansa yang kasar dan ketinggalan jaman.

HTH

Vektor
sumber
3

pyGTK produktif. Ini cukup mudah digunakan dan membuat GUI yang tidak terlihat setengah buruk.

dan_waterworth
sumber
Seberapa kaya komunitasnya? Seberapa cepat jawaban tiba di forumnya?
RPK
1
@RPK, saya tidak tahu, saya tidak pernah meminta bantuan, semuanya cukup mudah digunakan.
dan_waterworth
Saya tidak yakin "produktif" adalah kata yang tepat. "Menghasilkan keturunan, muda, buah, dll, berlimpah; sangat berbuah: pohon pir produktif" Mungkin "populer" atau "hebat".
S.Lott
@ S.Lott, produktif: "Demikian pula hasil yang dihasilkan atau bekerja dalam kelimpahan". (definisi wiktionary kedua). "Melayani untuk menghasilkan; berbuah hasil; aktif; seperti, otak produktif; kontroversi kejahatan." (Webster's Revised Unabridged Dictionary (1913 + 1828))
dan_waterworth
produktif seperti pada "pyGTK menghasilkan banyak aplikasi?" Tampaknya tegang. Orang-orang menghasilkan aplikasi. pyGTK adalah yayasan populer, mungkin, tetapi sepertinya bukan produsen.
S.Lott
0

Gtk3 adalah kerangka kerja GUI yang sangat matang. Ini memiliki binding Python asli (Introspeksi GObject) dan banyak dokumentasi . Jika Anda melakukan sedikit GUI, pertimbangkan untuk menggunakan Anjuta . Anjuta memiliki antarmuka seret dan lepas untuk mengatur widget Anda dengan mudah.

WxWidgets cukup bagus, namun tidak ada cara mudah untuk membuat panggilan balik Python dihasilkan secara dinamis seperti yang dilakukan Anjuta untuk Gtk.

PyGtk sekarang tidak digunakan lagi karena Gtk3 menjadi Python bindings (GObject Introspection)

PyQt juga pemain di Python GUI, tetapi tidak memiliki komunitas besar.

BoaConstructor lebih lama dipertahankan dan akan menjadi bodoh untuk digunakan.

theGtknerd
sumber