Bahasa pemrograman Python popularitasnya makin naik berdasarkan data dari https://www.tiobe.com/tiobe-index/ sejak tahun 1995 yang tadinya berada di posisi 22 hingga saat tulisan ini dibuat berada pada posisi ke 3. Python ini digunakan untuk pemrograman berorientasi objek. Python pemrograman interaktif yang memiliki banyak pustaka dan framework GUI. Yang akan kita bahas Python GUI Library untuk membantu para developer membuat aplikasi GUI secara mudah dan aman.
Daftar Isi
Ada yang berpendapat bahwa bahasa ini tidak yang terbaik untuk membuat aplikasi GUI, tapi tidak sedikit juga aplikasi yang pernah saya tau menggunakan python
- DropBox, File hosting
- Exaile (Audio Player)
- GNOme SoundConverter
- OpenShot Video Editor
- PiTiVi Video Editor
- Quod Libet, music player
- Wicd, Network manager di Linux
- Amarok, Audio Player
- Battlefield2, (Game Strategy) Sebagian menggunakan Python
- Civilization IV, Game Strategy Menggunakan python
- Fets on Fire, Game Music menggunakan PyGame
- Pirates of the Caribbean Online (Panda 3D)
- The Sims 4, menggunakan python 3.7.0
Di atas adalah sebagian software yang dibuat menggunakan python dan beberapa library (pustaka) yang bisa dinikmati saat ini.
Beruntungnya sebagai programmer python, memiliki banyak pilihan library, framework, dan toolkits yang free. Kita dapat menyesuaikan sesuai dengan kebutuhan dengan proyek yang sedang dikebangkan. Untuk Python GUI Library saya tidak bahas semuanya karena memang sangat banyak juga, dan sebagian lagi mirip. Saya ingin memilih yang cross platform bekerja pada python 3, kemudian menggunakan toolkits Gtk, QT, Tk, dan wxWidget, yang dari kriteria itu didapat Kivy, PyQT, Tkinter, dan wxPython.
Kivy
Kivy Corss Platform Python GUI Library yang bisa berjalan pada sistem operasi (Linux, MacOS, dan Windows) juga pada perangkat mobile (Android dan iOS). Diakselerasi pad OpenGL ES 2 serta ada 20 widget pada toolkitnya. Berlisensi Free dan juga dapat digunakan untuk komersial.
Kelebihan Kivy
- Lisensi MIT
Kivy dipublikasikan dengan lisensi MIT yaitu dapat digunakan secara gratis dan juga dapat ginakan untuk keperluas komersil.
- UI Yang Modern
Kivy memiliki tampilan yang dapat disesuaikan dan sama pada semua platform, ia juga memiliki tema default yang modern seperti flat desain dan juga menyediakan tema dari pihak ketiga diantaranya FlatKivy, KivyMD, dan lainnya
- Untuk Pengembangan Aplikasi Seluler
Anda yang pengembang aplikasi seluler dan game juga bisa menggunakan kerangka kerja ini karena mendukung multi-touch di iOS dan Android. Anda bisa melihat yang sudah ada di Google Play Store diantaranya Kivy Launcher, Flat Jewels, Kivy Pictures
- Untuk Aplikasi Interaktif
Kalau Anda menggunakan perangkat input dan gesture (Joystick, Apple Trackpad, Magic Mouse, game controllers) ini telah didukung sepenuhnya oleh Kivy kontrol UI input tradisional.
- Logic Kode dan Presentasi Terpisah
Kivy punya bahasa sendiri yang disebut KV untuk menulis dekorasi UI dan bisa ditulis terpisah dari kode logika yang menggunakan bahasa python.
- Performa Tinggi
Berbeda dari yang lain, kerangka kerja cross platform yang biasanya memiliki masalah yang sama pada performa, tapi di kivy tidak. Masalah kinerja ini diselesaikan dengan mengimplementasikan fitur penting dalam C/Cython. Serta menggunakan Graphic Engine menggunakan OpenGL ES untuk akselerasi hardware. Ini adalah optimasi cerdas yang menghasilkan kinerja terbaik.
- Bahasa kv
Bahasa ini untuk digunakan khusus mendesain UI, jadi antara logic dan elemen desain bisa dibuat terpisah, seperti yang sudah dijelaskan pada nomor 5. Yang tentu saja akan memudahkan dalam pengembangan dengan banyak orang. Ada yang fokus pada desain dan yang lainnya fokus pada logic.
- Serbaguna
Fleksibel dan Dinamis, itu yang pertama dari Kivy. Dapat bekerja pada semua sistem operasi populer dan juga bekerja pada perangkat Android dan iOS berkat kanvas OpenGL yang dapat membuat macam jenis graphic, dan juga cocok untuk pengembangan game.
- Multitouch gestures
Kekurangan Kivy
- Api Akses tidak full support
Meski bisa berjalan pada banyak platform, namun ada kelemahan yaitu kita akan kesulitan untuk mengakses API yang tidak didukung oleh Kivy. Tapi masalah ini sebenarnya bisa diselesaikan dengan pustaka python lain seperti pyobjc dan pyjnius yang menyediakan indirection level. Kalau tidak terbiasa maka bisa menjadi lebih sulit.
- Dokumentasi
Dokumentasi tidak terlalu banyak dijumpai, mungkin masih sedikit yang menggunakannya
PyQT
Binding python yang populer sebagai pustaka lintas platform diimplementasikan pada pustaka QT milik Nokia. Dapat bekerja pada Linux, MacOS, dan Windows dengan dual lisensi yaitu Commersial dan GPL biarpun mungkin untuk beberapa fitur tidak didapatkan pada versi GPL. Kalau aplikasi yang dibuat adalah opensource maka dapat menggunakan lisensi GPL.
Kelebihan PyQT
- Fleksibilitas Kode
Dengan konsep signal dan slot pada pemrograman QT GUI untuk komunikasi antar objek. Sinyal akan ditransmisikan pada suatu peristiwa (misal klik) dan untuk menangani event tersebut menggunakan slot yaitu fungsi yang dapat dipanggil( misal lakukan sesuatu saat tombol diklik). Cara menangani event gui seperti ini memungkinkan untuk kode menjadi fleksibel dan menghasilkan kode yang clea
- Bukan Sekedar Framework
API native ada pada QT seperti jaringan, database, dan lainnya. Denga API tunggal dapat menyediakan akses terstandarisasi hanya dengan satu baris kode dapat melayani banyak platform dan melakukan banyak hal padanya.
- Stabilitas
Karena sudah teruji dan telah banyak digunakan pada proyek besar seperti DropBox dan OpenShot video editor, juga Eric Python IDE
- WYSIWYG Builder
Pengembang aplikasi lebih dimanjakan lagi dengan adanya QT Designer. Pasalnya kita tidak menuliskan kode tapi hanya dengan drag n drop untuk merancang GUI
- Banyak UI Tersedia
Ketersediaannya widget seperti tombol, teks, menu, dan lainnya dengan tampilan asli (native) dari setiap platform. Maka aplikasi kita akan memiliki tampilan yang sesuai dengan lingkungan desktop itu.
- Banyak Sumber Belajar
Tidak perlu khawatir untuk mencari tutorial membuat aplikasi QT sangat banyak, karena komunitas yang besar dan populernya.
- API yang mudah dipahami
Kalau Anda berlatar belakang C++ atau QT akan lebih mudah untuk memahami API ini, karena PyQT memiliki kelas yang sesuai dengan QT C++ begitu juga dengan dokumentasi C++.
Kekurangan PyQT
- Lisensi Berbayar
PyQT memiliki dua lisensi yaitu GPL v3 yang free dan aplikasi buatan Anda harus menjadi open source, kalau tidak maka akan menggunakan lisensi Riverbank Commercial License.
- Tidak ada dikumentasi PyQT5 Python
Karena dokumentasi PyQT5 melink ke Qt-nya C++. Maka ini akan membingungkan bagi yang tidak memiliki latar belakang C++ atau telah berpengalaman dengan QT.
- Steep learning curve
Membutuhkan waktu yang lebih lama untuk bisa menghasilkan produk dari PyQT. Karena dengan cara implementasi yang berbeda mungkin diantaranya ada yang bertentangan bisa jadi akan membuat bingung bagi yang belum terbiasa. Tentu saja karena ini adalah framework yang besar.
Tkinter
Tkinter sudah termasuk dalam paket installasi python, dengan Tk dan GUI dari python menjadikan ini sebagai GUI standar python. Dan pengembang aplikasi GUI Python pasti 99% sudah pernah belajar meski sedikit tentang pustaka ini, karena banyak sumber yang bisa kita ambil untuk belajar, memiliki komunitas yang besar dan juga banyak. Tidak hanya itu, buku pun banyak tersedia.
Kelebihan Tkinter
- Bebas digunakan
Untuk kebutuhan free dan komesil tidak diperlukan membeli lisensi apapun. Semuanya bebas
- Python GUI Library Standard
Kita tidak perlu melakukan apapun hanya tinggal menggunakannya karena sudah termasuk dalam paket installasi python, dan Anda semua sudah memilikinya sejak menginstall python.
- Tidak Terlalu Rumit
Untuk membuat proyek yang dibangun menjadi executable tidak lah terlalu rumit, ini disebabkan paket standar yang tidak memerlukan banyak dependensi. Dan hasil dari paket executable binernya memiliki ukuran yang kecil.
- Mudah Dipelajar
Pilihan pertama untuk membangun aplikasi GUI Python adalah Tkinter, karena mudah untuk dipelajari dan dengan API langsung terhubung dengan python. Anda pun akan cepat produktif dengan ini.
Kekurangan Tkinter
- Tidak ada widget canggih, Tkinter tidak memiliki widget yang advaced untuk digunakan seperti date picker contohnya.
- Dan Tkinter juga tidak memiliki (atau belum) IDE GUI seperti QT Designer pada PyQT
PySide
Modul python untuk proyek Qt Python yang juga Cross Platform GUI Toolkits untuk bekerja pada Qt5, bisa dijadikan alternative dari Tkinter. Berada dibawah lisensi LGPL setelah mantan pemiliknya (nokia) tidak mencapai kesepakatan dengan PyQt. Untuk dukungan terhadap Android saat ini masih dalam tahap pengembangan.
Kelebihan PySide
- Qt Widget
Penggunaan antar muka widget tradisional memungkinkan disini
- Didukung Oleh Qt
Ini adalah binging resmi untuk python yang didukung oleh perusahaan Qt
- Lisensi
Kita lebih mudah menggunakan lisensi LGPL yang produk dari ini bisa diperuntukkan kebutuhan komesil
- QtQuick/QML
Kemungkinan untuk menggunakan pendekatan deklaratif untuk mendefinisikan antarmuka pengguna.
Kekurangan PySide
- Sama seperti PyQt, Anda dituntut untuk memiliki latar belajang C++ atau minimal dapat membaca kode C++. Begitu juga dengan dokumentasinya yang bisa dikatakan kurang baik untuk pengguna baru, sebab mungkin saja mereka berasumsi bahwa yang menggunakan ini telah berpengalaman terhadap Qt atau juga C++
wxPython
wxPython adalah toolkit GUI untuk python yang menggunakan komponen wxWidgets ditulis dalam bahasa C++. Dapat digunakan untuk membuat aplikasi Windows, Linux, dan MacOS dengan pustaka GTK2 atau GTK3.
PyForms
PyForms adalah framework cross environment yaitu dapat bekerja pada lebih dari satu lingkungan seperti web, desktop GUI, dan Terminal.
Dengan berdasarkan pada PyQT dan OpenGL juga beberapa pustaka lainnya, ada tersedia 22 kontrol yang cukup komprehensif yang semua itu dilandaskan pada objek ControlBase yang juga termasuk untuk pemutar video, web browser, dan OpenGL.
Baca juga: Python PyForms
Kesimpulan
Dari pertimbangan yang sudah kita ketahui bersama, untuk mulai menggunakan Python GUI Library pilihan ada ditangan masing-masing. Dan tentu saja menyesuaikan dari kebutuhan dasar serta latar belakang dari penggunan framework itu sendiri.
Sebelum untuk menentukan, mungkin sebaiknya mencari contoh aplikasi desktop yang dibuat berdasar pada framework itu, kalau perlu mencari juga sumber kode. Rasanya tidak sulit untuk menemukannya karena hampir semua menyertakan sumber kode dari aplikasi. Mungkin untuk yang komersil kita akan kesulitan menemukannya.