使GTK TreeView中的行无法选择

dpi*_*h40 0 python gtk pygtk

我想让PyGTK Tree-view(耦合到List Store)的选择行不可选,如果可能的话,显示为灰色.

有没有办法做到这一点?

jco*_*ado 5

正确的方法是使用gtk.TreeSelection.set_select_function.关于如何使行变灰,可以使渲染器对它们不敏感(参见sensitive=1下面的示例).

以下示例:

import pygtk
pygtk.require('2.0')
import gtk


def main():
    """Display treeview with one row not selectable."""
    window = gtk.Window()
    store = gtk.ListStore(str, bool)
    for row in (('A', True), ('B', False), ('C', True)):
        store.append(row)

    treeview = gtk.TreeView(store)
    renderer = gtk.CellRendererText()
    column = gtk.TreeViewColumn('Name', renderer, text=0, sensitive=1)
    treeview.append_column(column)
    window.add(treeview)

    selection = treeview.get_selection()
    selection.set_select_function(
        # Row selectable only if sensitive
        lambda path: store[path][1]
    )
    selection.set_mode(gtk.SELECTION_MULTIPLE)
    window.show_all()
    gtk.main()

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)