Cara Membuat Aplikasi GUI di Desktop Linux Menggunakan PyGObject - Bagian 1


Membuat aplikasi di Linux dapat dilakukan dengan berbagai cara, namun cara melakukannya terbatas, jadi gunakan bahasa pemrograman dan pustaka yang paling sederhana dan paling fungsional, itulah sebabnya kita akan melihat sekilas tentang membuat aplikasi di Linux desktop menggunakan pustaka GTK+ dengan bahasa pemrograman Python yang disebut “PyGObject ”.

PyGObject menggunakan Introspeksi GObject untuk membuat pengikatan untuk bahasa pemrograman seperti Python, PyGObject adalah generasi penerus dari PyGTK, bisa dibilang PyGObject=Python + GTK3.

Hari ini, kita akan memulai seri tentang membuat aplikasi GUI (Graphical User Interface) di desktop Linux menggunakan pustaka GTK+ dan bahasa PyGobject, seri ini akan mencakup topik berikut:

Tentang Python

Pertama-tama, Anda harus memiliki pengetahuan dasar tentang Python; Python adalah bahasa pemrograman yang sangat modern dan mudah digunakan. Ini adalah salah satu bahasa pemrograman paling terkenal di dunia, dengan menggunakan Python, Anda akan dapat membuat banyak aplikasi & alat hebat. Anda dapat mengikuti beberapa kursus gratis seperti yang ada di codeacademy.com atau Anda dapat membaca beberapa buku tentang Python di:

Tentang GTK+

GTK+ adalah perangkat lintas platform sumber terbuka untuk membuat antarmuka pengguna grafis untuk aplikasi desktop, pertama kali dimulai pada tahun 1998 sebagai perangkat GUI untuk GIMP, kemudian digunakan di banyak aplikasi lain dan segera menjadi salah satu perpustakaan paling terkenal untuk membuat GUI. GTK+ dirilis di bawah lisensi LGPL.

Membuat Aplikasi GUI Di Linux

Ada 2 cara membuat aplikasi menggunakan GTK+ & Python:

  1. Menulis antarmuka grafis hanya menggunakan kode.
  2. Merancang antarmuka grafis menggunakan program “Glade ”; yang merupakan alat RAD untuk mendesain antarmuka GTK+ dengan mudah, Glade menghasilkan GUI sebagai file XML yang dapat digunakan dengan bahasa pemrograman apa pun untuk membangun GUI, setelah mengekspor file XML GUI, kami akan dapat menghubungkan file XML dengan kami program untuk melakukan pekerjaan yang kita inginkan.

Kami akan menjelaskan kedua cara tersebut secara singkat.

Cara Hanya Kode

Menulis GUI hanya dengan menggunakan kode mungkin sedikit sulit bagi programmer pemula dan sangat membuang-buang waktu, namun dengan menggunakannya, kita dapat membuat GUI yang sangat fungsional untuk program kita, lebih dari yang kita buat menggunakan beberapa alat seperti Glade.

Mari kita ambil contoh berikut.

#!/usr/bin/python
-*- coding: utf-8 -*-

from gi.repository import Gtk

class ourwindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="My Hello World Program")
        Gtk.Window.set_default_size(self, 400,325)
        Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER)

        button1 = Gtk.Button("Hello, World!")
        button1.connect("clicked", self.whenbutton1_clicked)

        self.add(button1)
        
    def whenbutton1_clicked(self, button):
      print "Hello, World!"

window = ourwindow()        
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Salin kode di atas, tempel di file “test.py ” dan atur izin 755 pada file test.py dan jalankan file tersebut nanti menggunakan “./test.py ”, itulah yang akan Anda dapatkan.

nano test.py
chmod 755 test.py
./test.py

Dengan mengklik tombol tersebut, Anda akan melihat kalimat “Halo, Dunia! ” yang tercetak di terminal:

Izinkan saya menjelaskan kodenya secara mendetail.

  1. #!/usr/bin/python: Jalur default untuk interpreter Python (dalam banyak kasus versi 2.7), baris ini harus menjadi baris pertama di setiap file Python.
  2. # -*- coding: utf-8 -*-: Di sini kami menetapkan pengkodean default untuk file, UTF-8 adalah yang terbaik jika Anda ingin mendukung bahasa non-Inggris, biarkan seperti itu .
  3. dari gi.repository import Gtk: Di sini kita mengimpor perpustakaan GTK 3 untuk digunakan dalam program kita.
  4. Kelas jendela kita(Gtk.Window): Di sini kita membuat kelas baru, yang disebut “jendela kita”, kita juga menyetel tipe objek kelas menjadi “Gtk.Window”.
  5. def __init__(self): Bukan hal baru, kami mendefinisikan komponen jendela utama di sini.
  6. Gtk.Window.__init__(self, title=”My Hello World Program”): Kami menggunakan baris ini untuk menyetel judul “My Hello World Program ” ke jendela “ourwindow ”, Anda dapat mengubahnya judulnya jika Anda suka.
  7. Gtk.Window.set_default_size(self, 400,325): Menurut saya baris ini tidak memerlukan penjelasan, di sini kita menyetel lebar dan tinggi default untuk jendela kita.
  8. Gtk.Window.set_position(self, Gtk.WindowPosition.CENTER): Dengan menggunakan baris ini, kita dapat menyetel posisi default untuk jendela, dalam hal ini, kita menyetelnya ke tengah menggunakan parameter “Gtk.WindowPosition.CENTER”, jika mau, Anda dapat mengubahnya menjadi “Gtk.WindowPosition.MOUSE” untuk membuka jendela pada posisi penunjuk tetikus.
  9. button1=Gtk.Button(“Halo, Dunia!”): Kita membuat Gtk.Button baru, dan kita menyebutnya “button1”, teks default untuk tombol tersebut adalah “Halo, Dunia! ”, Anda dapat membuat widget Gtk apa pun jika Anda mau.
  10. button1.connect(“clicked”, self.whenbutton1_clicked): Di sini kita menghubungkan sinyal “clicked ” dengan tindakan “whenbutton1_clicked ”, sehingga ketika tombol diklik, tindakan “whenbutton1_clicked ” diaktifkan.
  11. self.add(button1): Jika kita ingin widget Gtk kita muncul, kita harus menambahkannya ke jendela default, baris sederhana ini menambahkan widget “button1 ” ke jendela, itu sangat diperlukan melakukan hal ini.
  12. defwhenbutton1_clicked(self, button): Sekarang kita mendefinisikan tindakan “whenbutton1_clicked ” di sini, kita mendefinisikan apa yang akan terjadi ketika widget “button1 ” diklik, widget “(self, button ) ” parameter penting untuk menentukan tipe objek induk sinyal secara spesifik.
  13. print “Halo, Dunia!”: Saya tidak perlu menjelaskan lebih lanjut di sini.
  14. window=ourwindow(): Kita harus membuat variabel global baru dan menyetelnya ke kelas ourwindow() sehingga kita dapat memanggilnya nanti menggunakan pustaka GTK+.
  15. window.connect(“delete-event”, Gtk.main_quit): Sekarang kita menghubungkan sinyal “delete-event ” dengan tindakan “Gtk.main_quit ”, ini penting untuk menghapus semua widget setelah kita menutup jendela program kita secara otomatis.
  16. window.show_all(): Menampilkan jendela.
  17. Gtk.main(): Menjalankan perpustakaan Gtk.

Itu saja, mudah bukan? Dan sangat fungsional jika kita ingin membuat beberapa aplikasi berukuran besar. Untuk informasi lebih lanjut tentang membuat antarmuka GTK+ menggunakan cara kode saja, Anda dapat mengunjungi situs dokumentasi resmi di:

Tutorial Python GTK3

Cara Desainer Glade

Seperti yang saya katakan di awal artikel, Glade adalah alat yang sangat mudah untuk membuat antarmuka yang kita perlukan untuk program kita, Glade sangat terkenal di kalangan pengembang dan banyak antarmuka aplikasi hebat dibuat dengan menggunakannya. Cara ini disebut “Pengembangan aplikasi cepat”.

Anda harus menginstal Glade untuk mulai menggunakannya, di Debian/Ubuntu/Mint jalankan:

sudo apt­-get install glade

Di RedHat/Fedora/CentOS, jalankan:

yum install glade

Setelah Anda mengunduh dan menginstal program, dan setelah Anda menjalankannya, Anda akan melihat widget Gtk yang tersedia di sebelah kiri, klik widget “jendela ” untuk membuat jendela baru.

Anda akan melihat bahwa jendela kosong baru telah dibuat.

Anda sekarang dapat menambahkan beberapa widget ke dalamnya, pada toolbar kiri, klik widget “tombol ”, dan klik pada jendela kosong untuk menambahkan tombol ke jendela.

Anda akan melihat bahwa ID tombolnya adalah “button1 ”, sekarang lihat tab Sinyal di toolbar kanan, dan cari sinyal “diklik ” dan masukkan “button1_clicked ” di bawahnya.

Sekarang kita telah membuat GUI, mari kita ekspor. Klik menu “File ” dan pilih “Simpan ”, simpan file di direktori home Anda dengan nama “myprogram.glade ” dan KELUAR.

Sekarang, buat file “test.py ” baru, dan masukkan kode berikut di dalamnya.

#!/usr/bin/python
-*- coding: utf-8 -*-

from gi.repository import Gtk

class Handler:
    def button_1clicked(self, button):
      print "Hello, World!"

builder = Gtk.Builder()
builder.add_from_file("myprogram.glade")
builder.connect_signals(Handler())

ournewbutton = builder.get_object("button1")
ournewbutton.set_label("Hello, World!")

window = builder.get_object("window1")

window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Simpan file, berikan izin 755 seperti sebelumnya, dan jalankan menggunakan “./test.py ”, dan itulah yang akan Anda dapatkan.

nano test.py
chmod 755 test.py
./test.py

Klik tombol tersebut, dan Anda akan melihat bahwa kalimat “Halo, Dunia! ” tercetak di terminal.

Sekarang mari kita jelaskan hal-hal baru:

  1. class Handler: Di sini kita membuat kelas bernama “Handler ” yang akan menyertakan definisi tindakan & sinyal, yang kita buat untuk GUI.
  2. builder=Gtk.Builder(): Kami membuat variabel global baru bernama “builder ” yang merupakan widget Gtk.Builder, ini penting untuk mengimpor file .glade.
  3. builder.add_from_file(“myprogram.glade”): Di sini kita mengimpor file “myprogram.glade ” untuk digunakan sebagai GUI default untuk program kita.
  4. builder.connect_signals(Handler()): Baris ini menghubungkan file .glade dengan kelas handler, sehingga tindakan dan sinyal yang kita definisikan di bawah kelas “Handler ” berfungsi dengan baik saat kita menjalankan program .
  5. ournewbutton=builder.get_object(“button1”): Sekarang kita mengimpor objek “button1 ” dari file .glade, kami juga meneruskannya ke variabel global “ournewbutton ” untuk menggunakannya nanti di program kami.
  6. ournewbutton.set_label(“Halo, Dunia!”): Kami menggunakan metode “set.label ” untuk menyetel teks tombol default menjadi “Halo, Dunia! " kalimat.
  7. window=builder.get_object(“window1”): Di sini kita memanggil objek “window1 ” dari file .glade untuk menampilkannya nanti di program.

Dan itu saja! Anda telah berhasil membuat program pertama Anda di Linux!

Tentu saja ada banyak hal yang lebih rumit yang harus dilakukan untuk membuat aplikasi nyata yang melakukan sesuatu, itulah mengapa saya menyarankan Anda untuk melihat dokumentasi GTK+ dan GObject API di:

  1. Panduan Referensi GTK+
  2. Referensi API Python GObject
  3. Referensi Objek PyG

Pernahkah Anda mengembangkan aplikasi apa pun sebelumnya di desktop Linux? Bahasa pemrograman dan alat apa yang digunakan untuk melakukannya? Apa pendapat Anda tentang membuat aplikasi menggunakan Python & GTK 3?