正确的方法是使用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)