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,它可以工作!谢谢这个简洁的小例子。