author Ahmad Muhardian

Tutorial PyGTK #2: Belajar Membuat Tombol, Label, dan Event Click Handler


Pemrograman PyGTK

Pada tutorial sebelumnya, kita sudah belajar cara membuat jendela di PyGTK.

Berikutnya kita akan mencoba menambahkan beberapa elemen ke dalam jendela, seperti tombol dan label.

Baiklah…

Mari kita mulai!

Membuat Tombol di PyGTK

Tombol dapat kita buat dengan class Button().

Seperti ini:

button = gtk.Button("Sebuah Tombol")

Mari kita coba tambahkan ke dalam jendela. Buatlah file baru bernama button1.py, kemudian isi dengan kode berikut.

import gtk

class App(gtk.Window):
    def __init__(self):
        super(App, self).__init__()

        self.set_title("Latihan Button")
        self.set_size_request(250, 150)
        self.set_position(gtk.WIN_POS_CENTER)

        # membuat button
        button = gtk.Button("Sebuah Tombol")

        # membuat container untuk button
        container = gtk.Fixed()

        # menambahkan button ke container
        container.put(button, 20, 30)

        # menambahkan container ke jendela
        self.add(container)
        self.connect("destroy", gtk.main_quit)
        self.show_all()


App()
gtk.main()

Hasilnya:

Membuat sebuah tombol

Baik saya akan jelaskan sedikit.

Sebelum membuat tombol, ada baiknya kita menyediakan wadah berupa container. Objek ini adalah sebuah layout (Fixed).

container = gtk.Fixed()

Setelah itu kita masukan objek tombol ke dalam layout atau container.

container.put(button, 20, 30)

Terakhir, kita tambahkan layout ke dalam jendela agar dapat ditampilkan.

self.add(container)

Membuat Beberapa Tombol

Berikutnya, cobalah membuat beberapa tombol.

Buat file baru bernama button2.py kemudian isi dengan kode berikut:

import gtk

class App(gtk.Window):
  def __init__(self):
    super(App, self).__init__()
   
    self.set_title("Latihan Tombol")
    self.set_size_request(250,150)
    self.set_position(gtk.WIN_POS_CENTER)
   
    btn1 = gtk.Button("Tombol 1")
    btn1.set_sensitive(False) # non-aktifkan tombol
    btn2 = gtk.Button("Tombol 2")
    btn3 = gtk.Button(stock=gtk.STOCK_CLOSE) 
    btn4 = gtk.Button("Tombol 4")
    btn4.set_size_request(80,40) # set ukuran tombol
   
    container = gtk.Fixed() # membuat kontainer
   
    container.put(btn1, 20, 30)
    container.put(btn2, 100, 30)
    container.put(btn3, 20, 80)
    container.put(btn4, 100, 80)
   
    self.connect("destroy", gtk.main_quit)
   
    self.add(container)
    self.show_all()

App()
gtk.main()

Hasilnya:

Membuat beberapa tombol

Pada contoh di atas, kita menggunakan beberapa method dari class Button() seperti:

  • set_sensitive() untuk menonaktifkan tombol;
  • set_size_request() untuk mengubah ukuran tombol;

…dan kita juga memberikan parameter seperti stock=gtk.STOCK_CLOSE untuk menambahkan ikon pada tombol.

Membuat Label

Label merupakan sebuah teks yang bisa kita tempel ke dalam jendela. Label biasanya digunakan untuk menampilkan informasi tertentu.

Cara membuat label di PyGTK:

label = gtk.Label("Teks Label")

Mari kita coba…

Buatlah file baru bernama label.py kemudian isi dengan kode berikut:

import gtk

class App(gtk.Window):
    def __init__(self):
        super(App, self).__init__()

        self.set_title("Latihan Label")
        self.set_size_request(640,320)
        self.set_position(gtk.WIN_POS_CENTER)

        label = gtk.Label("Selamat datang di Petani Kode")
        self.add(label)
        self.connect("destroy", gtk.main_quit)
        self.show_all()


App()
gtk.main()

Hasilnya:

Membuat Label di PyGTK

Label akan ditampilkan ditengah-tengah jendela, karena kita tidak menggunakan container.

Event Handler pada Tombol

Kita sudah tahu cara membuat tombol dan lebel, lalu pertanyaannya:

Bagaimana cara agar tombol bisa melakukan sesuatu saat diklik?

Untuk melakukan ini, kita harus menghubungkan tombol dengan sebuah fungsi aksi atau handler saat diklik.

Caranya?

Kita bisa gunakan method connect() seperti ini:

button.connect("clicked", on_button_click)

Parameter "clicked" merupakan sinyal, lalu on_button_click adalah nama fungsi yang akan meng-handle saat sinyal "clicked" terjadi.

Mari kita coba lihat contohnya…

Buatlah sebuah file baru bernama btn_click.py, kemudian isi dengan kode berikut:

import gtk

class App(gtk.Window):

    def __init__(self):
        super(App, self).__init__()

        self.set_title("Latihan Button Click")
        self.set_size_request(400, 200)
        self.set_position(gtk.WIN_POS_CENTER)

        # membuat button dan label
        button = gtk.Button("Klik Saya!")
        self.label = gtk.Label("...")

        # membuat container untuk button
        container = gtk.Fixed()

        # menambahkan button ke container
        container.put(button, 20, 30)
        container.put(self.label, 20, 100)

        # connect signal dan fungsi
        self.connect("destroy", gtk.main_quit)
        button.connect("clicked", self.on_button_click)

        # menambahkan container ke jendela
        self.add(container)
        self.show_all()
    
    def on_button_click(self, button):
        print("Tombol diklik!")
        self.label.set_text("Hello World")


App()
gtk.main()

Hasilnya:

Tombol diklik

Berhasil!

Kita sudah berhasil menghubungkan sinyal "clicked" dengan fungsi on_button_click().

button.connect("clicked", self.on_button_click)

Pada fungsi on_button_click() kita melakukan print teks ke console dan mengubah teks label menjadi "Hello World".

def on_button_click(self, button):
    print("Tombol diklik!")
    self.label.set_text("Hello World")

Sehingga pada console atau terminal akan tampil seperti ini ketika tombol diklik.

Terminal saat tombol diklik

Apa Selanjutnya?

Hore! kita sudah berhasil membuat tombol dan label serta mengetahui bagaimana cara membuat fungsi handler untuk tombol.

Selanjutnya, silakan pelajari tentang:

Selamat belajar.