PyGTK - Paned Class
Klasa Paned jest klasą bazową dla widżetów, które mogą wyświetlać dwa regulowane panele poziomo (gtk.Hpaned) lub pionowo (gtk.Vpaned). Widgety potomne do paneli są dodawane przy użyciu metod pack1 () i pack2 ().
Widżet panoramowany rysuje suwak separatora między dwoma panelami i zapewnia uchwyt do dostosowania ich względnej szerokości / wysokości. Jeśli właściwość zmiany rozmiaru widżetu podrzędnego wewnątrz panelu ma wartość True, rozmiar zostanie zmieniony zgodnie z rozmiarem paneli.
Następujące metody są dostępne dla klas HPaned i VPaned -
Paned.add1 (child) - dodaje widżet określony przez child do okienka górnego lub lewego
Paned.add2 (child) - dodaje widżet określony przez child do dolnego lub prawego panelu.
Paned.pack1 (child, resize, shrink) - dodaje widżet określony przez childdo górnego lub lewego okienka z parametrami. Gdybyresize jest True, childnależy zmienić rozmiar w przypadku zmiany rozmiaru widżetu panoramicznego. Gdybyshrink jest True, child może być mniejszy niż żądany rozmiar minimalny.
Paned.pack2 (child, resize, shrink) - ustawia pozycję separatora między dwoma panelami.
Oba typy widżetów Paned emitują następujące sygnały -
pozycja akceptacji | Jest to emitowane, gdy paned ma fokus powodujący aktywację widgetu podrzędnego z fokusem. |
pozycja anulowania | Jest to emitowane, gdy plik Esc klawisz jest wciśnięty podczas paned skupia się. |
ruch-uchwyt | Jest to emitowane, gdy paned ma fokus, a separator jest przesuwany. |
Przykład
W poniższym przykładzie zastosowano widżet gtk.Hpaned. W lewym okienku dodawany jest widget TreeView, aw prawym panelu widżet TextView. Po wybraniu dowolnego wiersza w TreeView wyemituje on sygnał row_activated, który jest połączony z funkcją wywołania zwrotnego. Plikon_activated()function pobiera tekst wiersza i wyświetla go w panelu widoku tekstu.
Obserwuj kod -
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()
Powyższy kod wygeneruje następujące dane wyjściowe -