PyGTK - Kelas Paned
Kelas berpanel adalah kelas dasar untuk widget yang dapat menampilkan dua panel yang dapat disesuaikan baik secara horizontal (gtk.Hpaned) atau vertikal (gtk.Vpaned). Widget anak ke panel ditambahkan dengan menggunakan metode pack1 () dan pack2 ().
Widget berpanel menggambar penggeser pemisah antara dua panel dan menyediakan pegangan untuk menyesuaikan lebar / tinggi relatifnya. Jika properti ubah ukuran widget anak di dalam panel disetel ke True, itu akan mengubah ukuran sesuai dengan ukuran panel.
Metode berikut tersedia untuk kelas HPaned serta VPaned -
Paned.add1 (anak) - Ini menambahkan widget yang ditentukan oleh child ke panel atas atau kiri
Paned.add2 (anak) - Ini menambahkan widget yang ditentukan oleh child ke panel bawah atau kanan.
Paned.pack1 (anak, resize, shrink) - Ini menambahkan widget yang ditentukan oleh childke panel atas atau kiri dengan parameter. Jikaresize adalah True, childharus diubah ukurannya saat widget berpanel diubah ukurannya. Jikashrink adalah True, child dapat dibuat lebih kecil dari permintaan ukuran minimumnya.
Paned.pack2 (anak, ubah ukuran, susutkan) - Ini mengatur posisi pemisah antara dua panel.
Kedua jenis widget Paned memancarkan sinyal berikut -
menerima-posisi | Ini dipancarkan saat paned memiliki fokus yang menyebabkan widget anak dengan fokus diaktifkan. |
posisi pembatalan | Ini dipancarkan saat Esc tombol ditekan saat paned memiliki fokus. |
pindah-pegangan | Ini dipancarkan saat paned memiliki fokus dan pemisah dipindahkan. |
Contoh
Contoh berikut menggunakan widget gtk.Hpaned. Di panel kiri, widget TreeView ditambahkan, dan di panel kanan, ada widget TextView. Ketika setiap baris di TreeView dipilih, itu akan memancarkan sinyal row_activated yang terhubung ke fungsi panggilan balik. Ituon_activated()function mengambil teks baris dan ditampilkan di panel tampilan teks.
Perhatikan kodenya -
import gtk, gobject
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("HPaned widget Demo")
self.set_default_size(250, 200)
vp = gtk.HPaned()
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
tree = gtk.TreeView()
languages = gtk.TreeViewColumn()
languages.set_title("GUI Toolkits")
cell = gtk.CellRendererText()
languages.pack_start(cell, True)
languages.add_attribute(cell, "text", 0)
treestore = gtk.TreeStore(str)
it = treestore.append(None, ["Python"])
treestore.append(it, ["PyQt"])
treestore.append(it, ["wxPython"])
treestore.append(it, ["PyGTK"])
treestore.append(it, ["Pydide"])
it = treestore.append(None, ["Java"])
treestore.append(it, ["AWT"])
treestore.append(it, ["Swing"])
treestore.append(it, ["JSF"])
treestore.append(it, ["SWT"])
tree.append_column(languages)
tree.set_model(treestore)
vp.add1(tree)
self.tv = gtk.TextView()
vp.add2(self.tv)
vp.set_position(100)
self.add(vp)
tree.connect("row-activated", self.on_activated)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_activated(self, widget, row, col):
model = widget.get_model()
text = model[row][0]
print text
buffer = gtk.TextBuffer()
buffer.set_text(text+" is selected")
self.tv.set_buffer(buffer)
if __name__ == '__main__':
PyApp()
gtk.main()
Kode di atas akan menghasilkan output berikut -