Tengo un problema con Gtk.Treeview
indide a Gtk.ScrolledWindow
. Tengo una gran cantidad de datos, que no se ajustan a mi ventana geométrica normal, así que puse mi Treeview dentro de un ScrolledWindow
, que parece ser la forma normal. El problema con esta solución es que mi encabezado de columna desaparece cuando me desplazo. Este comportamiento me parece algo bueno, ya que el ScrolledWindow
debería preocuparse por los widgets que contiene.¿Cómo mostrar los encabezados de columna en un GtkTreeView dentro de una ventana gtk.ScrolledWindow?
Entonces, ¿cómo puedo hacer que mi Treeview sea desplazable Y mostrar los encabezados de las columnas siempre en la primera fila?
he modificado el ejemplo basictreeview.py representar a mi problema:
#!/usr/bin/env python
# example basictreeview.py
import pygtk
pygtk.require('2.0')
import gtk
class BasicTreeViewExample:
# close the window and quit
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
def __init__(self):
# Create a new window
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Basic TreeView Example")
self.window.set_size_request(200, 200)
self.window.connect("delete_event", self.delete_event)
# create a TreeStore with one string column to use as the model
self.liststore = gtk.ListStore(str)
# we'll add some data now - 4 rows with 3 child rows each
for i in range(10):
self.liststore.append([str(i)])
# create the TreeView using treestore
self.treeview = gtk.TreeView(self.liststore)
# create the TreeViewColumn to display the data
self.tvcolumn = gtk.TreeViewColumn("Column-Name", gtk.CellRendererText(), text=0)
# add tvcolumn to treeview
self.treeview.append_column(self.tvcolumn)
# make it searchable
self.treeview.set_search_column(0)
# Allow sorting on the column
self.tvcolumn.set_sort_column_id(0)
# Allow drag and drop reordering of rows
self.treeview.set_reorderable(True)
# Add Treeview to a ScrolledWindow
self.scrolledwindow = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
self.scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.scrolledwindow.add_with_viewport(self.treeview)
self.window.add(self.scrolledwindow)
self.window.show_all()
def main():
gtk.main()
if __name__ == "__main__":
tvexample = BasicTreeViewExample()
main()
¿Puedes encontrar una aplicación que haga esto? Si es así, tu mejor opción es buscar en el código fuente. Por lo que sé, no hay una manera fácil de hacer esto con GtkTreeView. – ptomato