PyGTK - Kelas ComboBox
ComboBox adalah widget yang kuat dan populer di semua perangkat GUI. Ini menyediakan daftar dropdown item dari mana pengguna dapat memilih. Widget gtk.ComboBox mengimplementasikan antarmuka CellLayout dan menyediakan sejumlah metode untuk mengelola tampilan item.
Objek kelas gtk.ComboBox dikaitkan dengan ListSore, yang merupakan model daftar yang dapat digunakan dengan widget yang menampilkan koleksi item. Item ditambahkan ke ListStore dengan metode append (). Selanjutnya, objek CellRendererText dibuat dan dikemas ke dalam kotak kombo.
Ikuti langkah-langkah berikut untuk menyiapkan kotak kombo.
combobox = gtk.ComboBox()
store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 0)
PyGTK menawarkan metode kenyamanan - gtk.combo_box_new_text()untuk membuat kotak kombo daripada menggunakan penyimpanan daftar. Metode kenyamanan terkait append_text (), prepend_text (), insert_text () dan remove_text () digunakan untuk mengelola konten kotak kombo.
Kelas gtk.ComboBox memiliki metode berikut -
S.NO | Metode dan Deskripsi |
---|---|
1 | set_wrap_width() Mengatur jumlah kolom yang akan ditampilkan dalam tata letak tabel popup |
2 | get_active() Mengembalikan nilai properti "aktif" yang merupakan indeks dalam model item yang sedang aktif |
3 | set_active() Set item aktif dari combo_box ke item dengan indeks model yang ditentukan |
4 | set_model() Mengatur model yang digunakan oleh kotak kombo |
5 | append_text() Menambahkan string yang ditentukan oleh teks ke daftar string yang disimpan di penyimpanan daftar kotak kombo |
6 | Insert_text() Menyisipkan string yang ditentukan oleh teks di kotak kombo gtk.ListStore pada indeks yang ditentukan oleh posisi |
7 | prepend_text() Menambahkan string yang ditentukan oleh teks ke daftar string yang disimpan di penyimpanan daftar |
8 | remove_text() Menghapus string pada indeks yang ditentukan oleh posisi di liststore terkait |
9 | get_active_text() Mengembalikan string yang sedang aktif |
Widget ComboBox memancarkan sinyal berikut -
berubah | Ini dipancarkan ketika item baru di kotak kombo dipilih |
move_active | Ini adalah sinyal pengikat kunci yang dipancarkan untuk memindahkan pilihan aktif. |
Popdown | Ini adalah sinyal keybinding yang dipancarkan ke daftar kotak kombo. Binding default untuk sinyal ini adalah Alt + Up dan Escape |
Muncul | Ini adalah sinyal pengikatan kunci yang dipancarkan untuk memunculkan daftar kotak kombo. Binding default untuk sinyal ini adalah Alt + Down. |
Dua kode contoh untuk demonstrasi ComboBox diberikan di bawah ini.
Contoh 1
Dalam contoh ini, ListStore diisi dengan nama toolkit GUI Python yang populer dan dikaitkan dengan widget ComboBox. Saat pengguna membuat pilihan, sinyal yang diubah dipancarkan. Itu terhubung ke fungsi panggilan balik untuk menampilkan pilihan pengguna.
import pygtk
pygtk.require('2.0')
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("ComboBox with ListStore")
self.set_default_size(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
combobox = gtk.ComboBox()
store = gtk.ListStore(str)
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 0)
fixed = gtk.Fixed()
lbl = gtk.Label("select a GUI toolkit")
fixed.put(lbl, 25,75)
fixed.put(combobox, 125,75)
lbl2 = gtk.Label("Your choice is:")
fixed.put(lbl2, 25,125)
self.label = gtk.Label("")
fixed.put(self.label, 125,125)
self.add(fixed)
store.append (["PyQt"])
store.append (["Tkinter"])
store.append (["WxPython"])
store.append (["PyGTK"])
store.append (["PySide"])
combobox.set_model(store)
combobox.connect('changed', self.on_changed)
combobox.set_active(0)
self.connect("destroy", gtk.main_quit)
self.show_all()
return
def on_changed(self, widget):
self.label.set_label(widget.get_active_text())
return
if __name__ == '__main__':
PyApp()
gtk.main()
Setelah dieksekusi, program menampilkan output berikut -
Contoh 2
Versi kedua dari program ini menggunakan metode kemudahan combo_box_new_text()untuk membuat kotak kombo dan fungsi append_text () untuk menambahkan string di dalamnya. Di kedua program, fileget_active_text() Metode ini digunakan untuk mengambil pilihan pengguna dan menampilkan label di jendela.
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Simple ComboBox")
self.set_default_size(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
cb = gtk.combo_box_new_text()
cb.connect("changed", self.on_changed)
cb.append_text('PyQt')
cb.append_text('Tkinter')
cb.append_text('WxPython')
cb.append_text('PyGTK')
cb.append_text('PySide')
fixed = gtk.Fixed()
lbl = gtk.Label("select a GUI toolkit")
fixed.put(lbl, 25,75)
fixed.put(cb, 125,75)
lbl2 = gtk.Label("Your choice is:")
fixed.put(lbl2, 25,125)
self.label = gtk.Label("")
fixed.put(self.label, 125,125)
self.add(fixed)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_changed(self, widget):
self.label.set_label(widget.get_active_text())
if __name__ == '__main__':
PyApp()
gtk.main()
Output dari program ini mirip dengan program sebelumnya.