Membuat Aplikasi GUI Python Dengan 12 Mobul Ini
Membuat Aplikasi GUI Python Dengan 12 Mobul Ini

Yang saya suka dari Bahasa Python diantaranya adalah memiliki banyak pustaka dan modul. Modul sangat membantu dalam mempercepat pembuatan aplikasi. Dalam membuat aplikasi GUI di Python sedikitnya ada 12 modul populer yang sudah banyak digunakan. Salah satu modul yang paling terkenal untuk membuat aplikasi GUI Tkinter. Modul GUI Python pun banyak yang cross platform, artinya bisa digunakan pada semua jenis sistem operasi populer saat ini yaitu Windows, MacOS, dan Linux.

Daftar Isi

 

Jadi kita tinggal menyesuaikan saja, aplikasi yang dibuat akan bisa dijalankan untuk satu OS tertentu atau untuk banyak OS. Berikut 12 Modul Python untuk membuat aplikasi GUI (Dekstop) dengan contoh aplikasi sederhana.

Tkinter

Tkinter pustaka tradisional python yang sudah dalam paket installasi python. Pustaka Tkinter merupakan bentuk dari OOP tcl/tk. Yaitu tool bahasa pemrograman dengan TK sebagai library tcl untuk membangun aplikasi Desktop.

Baca juga: Membuat Aplikasi Teks Editor Tkinter

Sekarang saya akan memeriksa, apakah python pada sistem operasi yang saya gunakan ini sudah ada Tkinter atau belum. Cara mengetahuinya cukup mudah, kita coba import saja import _tkinter. Jika hasilnya seperti ini:

>>> import _tkinter
Traceback (most recent call last):
  File "", line 1, in 
ModuleNotFoundError: No module named '_tkinter'
>>>

Ternyata pustaka bernama tkinter di sistem saya belum terinstall. Dan untuk menginstall Tkinter caranya cukup mudah, cukup dengan satu baris perintah apt-get install python3-tk enter dan tunggu sampai selesai. Dan coba lagi import, bila tidak ada muncul ERROR maka library Tkinter sudah terpasang.

Setelah selesai install Tkinter, sekarang mari kita coba membuat satu aplikasi sederhana. Berikut contoh programnya

from tkinter import *

root = Tk()
mylabel = Label(root, text = 'Hello, world. edikartono.com')
mylabel.pack()
root.mainloop()

Setelah itu saya menyimpannya dengan nama tk-hello.py dan mencoba menjalankannya dengan memanggil file tersebut dari terminal python3 tk-hello.py dan muncullah jendela seperti di bawah ini. Bisa menjalankan aplikasi ini kalau menggunakan VCode atau PyCharm, atau IDE lain yang ada terminalnya. Karena saya membuatnya di teks edito Gedit, maka menjalankannya lewat terminal.

membuat aplikasi gui python tkinter

wxPython

wxPython Tool GUI yang bisa digunakan cross platform, wxPython menggunakan pustaka dari wxWidgets dibuat dari bahasa C++. Kalau aplikasi Anda buat ingin bisa dijalankan pada lintas sistem operasi, maka pilihannya menggunakan GUI Toolkits wxPython.

Untuk menginstall wxPython, untuk Windows dan Mac bisa menggunakan pip install -U wxPython.

Install wxPython Di Linux

Ada 3 cara install di linux, yang saya gunakan distro Devuan. Devuan adalah Debian tanpa systemd, jadi cara ini bisa juga untuk semua distro basis debian dan ubuntu. Coba terlebih dahulu dengan perintah apt-get install python3-wxgtk4.0 python3-olefile python3-pil python3-sip Kalau tidak ada mungkin perlu menambahkan repository wxPython dengan cara seperi berikut:

  1. Menambahkan repository wxPython
    curl http://apt.wxwidgets.org/key.asc | sudo apt-key add -
    Atau bisa dengan mengedit file source di /etc/apt/source.list
    # wxWidgets/wxPython repository at apt.wxwidgets.org
    deb http://apt.wxwidgets.org/ DIST-wx main
    deb-src http://apt.wxwidgets.org/ DIST-wx main
    
    Pada DIST diganti dengan code nama distro yang digunakan saat ini, contoh
     
    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Debian
    Description:	Devuan GNU/Linux 3 (beowulf)
    Release:	3
    Codename:	beowulf
    
    Distro saya memiliki Codename beowulf, jadi DIST diganti menjadi beowulft-wx. Kemudian jalankan update apt-get update dan terakhir install apt-get install python3-wxgtk4.0 python3-olefile python3-pil python3-sip
  2. Menggunakan PIP
    pip install -U \
          -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \
          wxPython

Untuk lebih lengkapnya bisa dilihat di https://wiki.wxpython.org/How%20to%20install%20wxPython

Sekarang saya akan mencoba untuk membuat aplikasi GUI menggunakan pustaka wxPython.

# Pertama kita import paket wxPython.
import wx

# membuat objek aplikasi.
app = wx.App()

# membuat frame.
frm = wx.Frame(None, title="Hello World")

# menampilkannya.
frm.Show()

# memulai loop.
app.MainLoop()

membuat aplikasi gui python

PyGTK

PyGTK untuk membuat aplikasi GUI Python dengan libary GTK+ yang biasanya ini untuk membuat aplikasi GUI di Linux pada lingkungan desktop environment GNome. Beberapa aplikasi yang menggunakan PyGTK adalah GNOME Music, GNOME Tweak Tool, Pitivi, Quod Libet, Transmageddon. Anda yang sering menggunakan linux dengan desktop GNome mungkin sudah sering dengan aplikasi itu ya.

Untuk install PyGTK Python bisa menggunakan PIP3 untuk windows dan linux, dan membutuhkan beberapa dependensi GTK+3, Python3, dan gobject-introspectoion. Di OS yang saya gunakan sudah default terinstall paket python3-gi, jadi bisa langsung gunakan. Coba lakukan import gi kalau tidak ada ERROR berarti sudah terinstall. Kalau belum Di Ubuntu/Debian apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0

Dan kita buat aplikasi pertama kita, seperti biasa aplikasi GUI Hello World.

from gi.repository import Gtk
import sys


class MyWindow(Gtk.ApplicationWindow):
    # constructor for a Gtk.ApplicationWindow

    def __init__(self, app):
        Gtk.Window.__init__(self, title="Welcome to edikartono.com", application=app)
        self.set_default_size(200, 100)

        # create a label
        label = Gtk.Label()
        # set the text of the label
        label.set_text("Hello edikartono.com")
        # add the label to the window
        self.add(label)


class MyApplication(Gtk.Application):

    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        Gtk.Application.do_startup(self)

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)

Wow ternyata ada Error meski program berhasil menjalankan window. Dilihat dari pesan errornya harus menyatakan spesifik versi Gtk yang digunakan. Baik kita coba tambahkan kode ini pada baris paling atas, yaitu nomor 1

import gi
gi.require_version('Gtk', '3.0')

pygtk

Dan sekarang coba jalankan lagi, dan pesan errornya sudah hilang. Wih ini baru buat aplikasi sederhana sudah ketemu ERROR ?️?️?️

pygtk

PyGObject

PyGObject menggunakan pustaka berbasis OOP dalam bahasa C yang berisi GTK, GStreamer, WebKitGTK, GLib, dan lainnya. Saya percaya yang sering ngulik linux pasti pernah menemukan ini.

PyQT

PyQT untuk membuat aplikasi GUI di Python yang menggunakan library Qt, sementara Qt juga digunakan untuk membuat aplikasi GUI di C++. Fitur menarik dari Qt adalah dapat menggunakan StyleSheet yang menjadikan Aplikasi GUI menjadi lebih indah tampilannya.

Install PyQt pada OS Windows menggunakan pip install pyqt5, untuk install PyQt di Debian dengan cara apt-get install python3-pyqt5. PyQt ada yang versi 4 dan versi 5, jadi kalau mau install yang versi 4 tinggal ganti saja 5 menjadi 4.

# https://edikartono.com/python/membuat-aplikasi-gui-python
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtCore import QSize    

class HelloWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(640, 480))    
        self.setWindowTitle("Hello world - edikartono.com") 

        centralWidget = QWidget(self)          
        self.setCentralWidget(centralWidget)   

        gridLayout = QGridLayout(self)     
        centralWidget.setLayout(gridLayout)  

        title = QLabel("Hello World from PyQt\nEDIKATONO.COM", self) 
        title.setAlignment(QtCore.Qt.AlignCenter) 
        gridLayout.addWidget(title, 0, 0)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = HelloWindow()
    mainWin.show()
    sys.exit( app.exec_() )

membuat aplikasi gui python

PySide

PySide juga menggunakan library Qt sama seperti PyQt. Dam kode programmnya pun sama seperti PyQt. Saya tidak tahu terlalu apa perbedaannya selain dari pengembang proyek ini.

Kivy

Library Kivy ini cross platform dan bukan hanya antar OS saja, tapi antar jenis device. Bisa untuk Desktop dan juga Mobile untuk Android, iOS, dan Raspberry pi.

Baca Juga: Belajar Kivy

Install Kivy bisa dilakukan melalui pip, anaconda, dan juga lewat ppa repository (Debian dan Ubuntu). Kali ini saya akan mencoba menginstall menggunakan pip. Pertama siapkan dan aktivkan virtual environment. Lalu pip install kivy. Kalau Anda akan menginstall dari ppa repositoy, tambahkan terlebih dahulu pada source.list deb http://ppa.launchpad.net/kivy-team/kivy/ubuntu xenial main pada xenial ganti sesuai dengan codename distro masing-masing. Jangan lupa import juga GPG Key apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6 update dan install apt-get install python3-kivy. Selesai

import kivy
kivy.require('1.0.6') # Ganti denga versi kivy yang terinsall!

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

    def build(self):
        return Label(text='Hello world, edikartono.com')


if __name__ == '__main__':
    MyApp().run()

Pyforms

Pyforms bukan lagi sekedar library, framework yang digunakan untuk membuat aplikasi GUI pada python. Aplikasi yang menggunakan pyforms dapat berjalan di Web, Desktop, dan Terminal (CLI). Jadi cukup satu aplikasi bisa langsung dijalankan ditiga tempat sekaligus. Mereka menyebutnya Cross Environment Framework

Ada beberapa dependensi yang dibutuhkan oleh Pyforms, yang wajib ada python dan PyQT4, dan berikut dibutuhkan untuk kebutuhan tertentu PyOpenGL, VisVis, Numpy, dan Python Opencv. Install pyforms melalui pip pip install pyforms akan menginstall semua dependensi secara otomatis

Baca selengkapnya tentang PyForms pada halama Membuat Aplikasi GUI Python dengan PyForms

PySimpleGUI

Toga

PySciter

PyWebview

PyWebView adalah pustaka yang berguna kalau kita ingin membuat aplikasi gui berbasis HTML, CSS, dan JS. Prinsip kerjanya adalah seperti browser, bahkan pyWebView bisa dikombinasikan dengan Flask dan Bottle. Install pyWebView

pip3 install pywebviwew

Sekarang kita coba untuk membuat aplikasinya, sederhana saja dulu untuk menguji bagaimana cara kerjanya.

import webview
webview.create_window('App PyWebView edikartono.com', 'https://edikartono.com')
webview.start()

Pada baris kedua, yang ada didalam kurung berisi title aplikasinya dan kedua adalah url halaman yang akan diambil.

Och, kok ada error seperti ini ya

[pywebview] GTK cannot be loaded
Traceback (most recent call last):
  File "/home/edi/Documents/python-gui-pyw/env/lib/python3.7/site-packages/webview/guilib.py", line 16, in import_gtk
    import webview.platforms.gtk as guilib
  File "/home/edi/Documents/python-gui-pyw/env/lib/python3.7/site-packages/webview/platforms/gtk.py", line 25, in <module>
    import gi
ModuleNotFoundError: No module named 'gi'
[pywebview] QT cannot be loaded
Traceback (most recent call last):
  File "/home/edi/Documents/python-gui-pyw/env/lib/python3.7/site-packages/webview/guilib.py", line 29, in import_qt
    import webview.platforms.qt as guilib
  File "/home/edi/Documents/python-gui-pyw/env/lib/python3.7/site-packages/webview/platforms/qt.py", line 28, in <module>
    from PyQt5 import QtCore
ModuleNotFoundError: No module named 'PyQt5'
Traceback (most recent call last):
  File "pr-webview.py", line 3, in <module>
    webview.start()
  File "/home/edi/Documents/python-gui-pyw/env/lib/python3.7/site-packages/webview/__init__.py", line 79, in start
    guilib = initialize(gui)
  File "/home/edi/Documents/python-gui-pyw/env/lib/python3.7/site-packages/webview/guilib.py", line 93, in initialize
    raise WebViewException('You must have either QT or GTK with Python extensions installed in order to use pywebview.')
webview.util.WebViewException: You must have either QT or GTK with Python extensions installed in order to use pywebview.


Ternyata dia minta pustaka Qt atau GTK.
Harusnya tadi installnya pake cara ini pip install pywebview[qt] untuk yang di linux dan ini pip install pywebview[cef] untuk di windows dan meminta .NET 4.0 juga.

Opsi lain di linux adalah install PyGObject kalau yang ingin menggunakan GTLK

sudo apt install python-gi python-gi-cairo python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-webkit2-4.0

Atau kalau menggunakan PyQt5 install paket berikut untuk QtWebChannel

sudo apt install python3-pyqt5 python3-pyqt5.qtwebengine python3-pyqt5.qtwebchannel python-pyqt5 python-pyqt5.qtwebengine python-pyqt5.qtwebchannel libqt5webkit5-dev

Dan QtWebKit

sudo apt install python3-pyqt5 python3-pyqt5.qtwebkit python-pyqt5 python-pyqt5.qtwebkit libqt5webkit5-dev

Setelah salah sati dependensi di atas sudah diinstall, kita coba lagi jalankan.

pywebview

Ok sudah berjalan seperti yang diinginkan. Kalau masih error juga mungkin perlu install paket development seperti

sudo apt install libcairo2-dev libgirepository1.0-dev

Kesimpulan

Untuk yang belum dibahas karena internet lagi lambat, jadi tidak bisa install dan praktek.

Pilihan untuk membuat aplikasi GUI di Python ada banyak dan bervariasi. Jadi kita bisa menyesuaikan dengan aplikasi yang akan dibuat. Untuk keperluan cross platform atau multi platform, atau hanya untuk satu platform tertentu saja.