PyGTK - Clase panelada
La clase Paned es la clase base para los widgets que pueden mostrar dos paneles ajustables horizontalmente (gtk.Hpaned) o verticalmente (gtk.Vpaned). Los widgets secundarios a los paneles se agregan mediante los métodos pack1 () y pack2 ().
El widget de panel dibuja un control deslizante separador entre dos paneles y proporciona un controlador para ajustar su ancho / alto relativo. Si la propiedad de cambio de tamaño del widget secundario dentro de un panel se establece en Verdadero, cambiará de tamaño de acuerdo con el tamaño de los paneles.
Los siguientes métodos están disponibles para las clases HPaned y VPaned:
Paned.add1 (hijo): esto agrega el widget especificado por child al panel superior o izquierdo
Paned.add2 (hijo): esto agrega el widget especificado por child al panel inferior o derecho.
Paned.pack1 (child, resize, shrink) - Esto agrega el widget especificado por childal panel superior o izquierdo con los parámetros. Siresize es True, childdebe cambiarse de tamaño cuando se cambia el tamaño del widget encuadrado. Sishrink es True, child puede hacerse más pequeño que su pedido de tamaño mínimo.
Paned.pack2 (child, resize, shrink): establece la posición del divisor entre los dos paneles.
Ambos tipos de widgets Paned emiten las siguientes señales:
aceptar posición | Esto se emite cuando paned tiene el foco que hace que se active el widget secundario con el foco. |
cancelar posición | Esto se emite cuando el Esc se presiona la tecla mientras paned tiene el foco. |
mover-manejar | Esto se emite cuando paned tiene el foco y el separador se mueve. |
Ejemplo
El siguiente ejemplo usa un widget gtk.Hpaned. En el panel izquierdo, se agrega un widget TreeView, y en el panel derecho, hay un widget TextView. Cuando se selecciona cualquier fila en TreeView, emitirá una señal row_activated que está conectada a una función de devolución de llamada. loson_activated()function recupera el texto de la fila y se muestra en el panel de vista de texto.
Observe el código -
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()
El código anterior generará la siguiente salida: