Tôi gặp sự cố với Gtk.Treeview
ở một số Gtk.ScrolledWindow
. Tôi có một lượng lớn dữ liệu, không phù hợp với hình học cửa sổ bình thường của tôi, vì vậy tôi đặt Treeview của tôi bên trong một ScrolledWindow
, có vẻ như là cách thông thường. Vấn đề với giải pháp này là, Tiêu đề cột của tôi biến mất, khi tôi cuộn. Hành vi này có vẻ hơi ổn với tôi, vì ScrolledWindow
nên quan tâm đến các tiện ích bên trong nó.Làm cách nào để hiển thị tiêu đề cột trong GtkTreeView bên trong gtk.ScrolledWindow?
Vì vậy, làm cách nào để có được Số lần xem trang của tôi có thể cuộn được VÀ hiển thị tiêu đề cột luôn ở hàng đầu tiên?
tôi sửa đổi ví dụ basictreeview.py để đại diện cho vấn đề của tôi:
#!/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()
Bạn có thể tìm thấy ứng dụng thực hiện việc này không? Nếu vậy, đặt cược tốt nhất của bạn là tìm mã nguồn. Theo tôi biết, không có cách nào dễ dàng để làm điều này với GtkTreeView. – ptomato