Gtk 如何在单击列标题时对树视图进行排序
我有一个Gtk 如何在单击列标题时对树视图进行排序,gtk,Gtk,我有一个GtkTreeView,里面有GtkTreeStore,我想在用户单击任何列标题时对整个表进行排序(GtkTreeView),我还想将单元格中的文本对齐到左侧 如何执行此操作?按顺序: 你真的需要开始更多地关注这个问题 确保在每个列上都设置了一个,然后查看接口。这也很有帮助 将属性设置为0.f 享受吧 #/usr/bin/python ########################################################### # #具有两个可排序列的基本Gtk
GtkTreeView
,里面有GtkTreeStore
,我想在用户单击任何列标题时对整个表进行排序(GtkTreeView
),我还想将单元格中的文本对齐到左侧
如何执行此操作?按顺序:
0.f
#/usr/bin/python
###########################################################
#
#具有两个可排序列的基本Gtk.TreeView示例
#
###########################################################
#使用新的PyGObject绑定
从gi.repository导入Gtk
导入操作系统
导入getpass#这仅用于自动打印主文件夹。
类MyWindow(Gtk.Window):
定义初始化(自):
Gtk.Window.\uu初始化(self,title='My Window title')
self.connect('delete-event',Gtk.main_退出)
#Gtk.ListStore将保存TreeView的数据
#仅显示前两列
#第三个用于将文件大小按数字排序
store=Gtk.ListStore(str,str,long)
#获取数据-请参见下文
自助商店(商店)
treeview=Gtk.treeview(型号=商店)
#第一个TreeView列显示来自的数据
#第一个ListStore列(text=0),其中包含
#文件名
renderer_1=Gtk.cellrenderText()
列_1=Gtk.TreeViewColumn('File Name',renderer_1,text=0)
#调用set\u sort\u column\u id使treeViewColumn可排序
#通过单击其标题。该列按排序
#传递给它的ListStore列索引
#(在本例中为0-第一列ListStore)
列\ 1.设置\排序\列\ id(0)
treeview.append_列(列_1)
#xalign=1右对齐第二列中的文件大小
renderer_2=Gtk.cellrenderText(xalign=1)
#text=1从第二个ListStore列中提取数据
#其中包含格式化为字符串的字节大小的文件
#有一千个分隔符
column_2=Gtk.TreeViewColumn('Size in bytes',renderer_2,text=1)
#使Treeview列可按第三个ListStore列排序
#其中包含实际的文件大小
列\ 2.设置\排序\列\ id(1)
treeview.append_列(第2列)
#使用ScrolledWindow使TreeView可滚动
#否则,树视图将展开以显示所有项目
#仅允许垂直滚动条
scrolled_window=Gtk.scrolled window()
滚动的_窗口。设置_策略(Gtk.PolicyType.NEVER,Gtk.PolicyType.AUTOMATIC)
滚动窗口。添加(treeview)
滚动窗口。设置最小内容高度(200)
添加(滚动窗口)
self.show_all()
def存储(自身、存储):
目录='/home/'+getpass.getuser()
对于os.listdir(目录)中的文件名:
size=os.path.getsize(os.path.join(目录,文件名))
#第二个元素显示在第二个TreeView列中
#但该列按第三个元素排序
#因此,文件大小按数字排序,而不是按字符串排序
append([filename,{0:,}.format(size),size])
#主要部分:
win=MyWindow()
Gtk.main()
这是GTK3,它可以工作!谢谢这个简洁的小例子。