Widget
Widget mirip dengan wijen: kecil, banyak dan ditempel-tempel (halah apasih). Maksudnya, komponen-komponen yang sering kita lihat di suatu program desktop seperti label, button, combo box dll. di GTK dikenal dengan istilah widget. Kita buat file untuk mengenal widget button yang pernah digunakan di postingan sebelumnya:
$> gedit rg003a.rb
#!/usr/bin/ruby require "gtk2" def keluar Gtk.main_quit end win = Gtk::Window.new win.resize(100, 50) win.signal_connect("destroy") { keluar } btn = Gtk::Button.new("Keluar") btn.signal_connect("clicked") { keluar } btn.show win.add(btn) win.show Gtk.main
Logika program di atas tidak jauh berbeda dengan yang dijabarkan di postingan sebelumnya, mungkin yang perlu ditambahkan adalah mengenai widget:
- Daripada membuat blok program yang berulang karena digunakan di beberapa respon signal, kita buat method “keluar” yang bisa dipanggil oleh respon signal di bagian mana saja, salah satunya adalah ketika widget button “Keluar” diklik.
-
btn.show
Berfungsi untuk menampilkan widget yang dimaksud. Jika method show tidak dipanggil maka widget tidak akan tampil walaupun sudah dimasukan ke suatu container.
-
win.add(btn)
Mulai dikenal istilah container. Di contoh program, windows “win” merupakan container dimana kita bisa menambahkan widget “btn” ke container “win” tersebut dengan method add.
Container
Di contoh kita menambahkan hanya 1 widget (button) ke container window. Untuk memasukan banyak widget ke suatu container kita akan melakukan “packing widgets” yang umumnya memanfaatkan box (Gtk::HBox untuk mewadahi widget secara horisontal, Gtk::VBox untuk mewadahi widget secara vertikal) atau tabel. Untuk prakteknya buatlah file rg003b.rb yang berisi kode:
#!/usr/bin/ruby require "gtk2" def keluar Gtk.main_quit end def cetak nama = @teks.text puts "Nama: " + nama end label = Gtk::Label.new("Nama") @teks = Gtk::Entry.new btn = Gtk::Button.new("OK") btn.signal_connect("clicked") { cetak } box = Gtk::HBox.new box.pack_start(label, false, false, 5) box.pack_start(@teks) box.pack_start(btn, false) win = Gtk::Window.new win.signal_connect("destroy") { keluar } win.add(box) win.show_all Gtk.main
Eksekusi rogram di atas berupa form input yang akan mencetak nama yang dimasukan jika kita menekan tombol OK:
Penjelasan yang berkaitan dengan packing widgets:
-
pack_start(child, expand, fill, padding)
Method tersebut berfungsi untuk memasukan para child widgets ke dalam container sambil memasukan parameter untuk childe tersebut.
Child = obyek widget yang dimasukan,contohnya “label” atau “btn”
Expand (true/false) = apakah ukuran widget akan ikut mengembang jika ukuran container berubah
Fill (true/false) = hanya berlaku jika expand true, apakah widget akan mengisi ukuran container yang mengembang dengan ikut mengembang atau hanya mengisi sekelilingnya dengan padding
Padding = jarak widget dengan tepian -
win.show_all
Menampilkan seluruh widget yang ada di container yang bersangkutan sehingga kita tidak perlu memanggil method show satu-persatu.
Referensi:
haiyah.. isinya sama. yg selanjutnya siapa yg mo bikin standar? 😛
*tunjuk2 niwatori*
enaknya telat posting itu yah.. tinggal ikutin yg duluan posting hihihihi *kipas-kipas* yang jago duluan aja pls *dorong2 fajran*
iya nih.. isinya sma dengan punyanya om iang 🙂
yeee katanya mo barengan/disamain aja supaya pembandingnya enak (wondering someone who encouraged to learn both of python and ruby comfortly), ya sutra back to free solo exploring lagi 😛
asik asik.. kalo dah jadi kasih tau ya.. *nyiapin catetan* 😛
dik, kalau mau menatur atribut buton begimana?, misal supaya buton nya ukarannya sekian misalnya:-
0
mas, tutor ruby-nya ada yang satu paket ga?? Maksudnya, jadi satu file archive ato pdf gitu.. Kalo ada bisa di donlot nih….
ada konspirasi nih……..