我有一個項目需要我有一個數據列表,你應該只能選擇列表中的兩個項目。 我對python和Gtk非常陌生,但是我的搜索對於如何做到這一點的答案一直徒然。所以,代碼。 如何編寫一個Gtk.TreeSelection.set_select_function()
#!/usr/bin/python3
from gi.repository import Gtk
class Window(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="MyWindow")
self.set_default_size(200, 200)
self.liststore = Gtk.ListStore(str, str)
for i in range(1,10):
row = "Row"+ str(i)
value = "Value"+str(i)
self.liststore.append([row, value])
treeview = Gtk.TreeView(model=self.liststore)
renderer_text = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("Col1", renderer_text, text=0)
treeview.append_column(column)
column = Gtk.TreeViewColumn("Col2", renderer_text, text=1)
treeview.append_column(column)
treeview.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
#treeview.get_selection().set_select_function() <-- How do you write one of these?
self.add(treeview)
win = Window()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
很顯然,因爲我想限制選項數量,Gtk.SelectionMode.MULTIPLE將無法正常工作。但是我發現你可以用set_select_function()指定你自己的選擇模式。然而,我卻沒有找到任何寫這些的例子,或者他們需要包含什麼。我已經在Java中爲JList編寫了相同類型的函數(在Java中啓動項目,但由於語言[掃描WiFi]的限制,必須切換語言),如果出於某種原因需要,我可以發佈該代碼。
所以,我的問題是這樣的:你如何實際爲python中的TreeSelection編寫一個選擇函數?我正在使用Python 3和Gtk3。
獎金問題:如何編寫它,以便限制選擇的數量?
對不起,但我不明白這應該如何使用。所需參數映射到什麼地方? – Chewtoy
我已經修改了我的帖子以獲得工作示例。當選擇改變時,GTK +會自行填充這些參數。 .set_select_function()只是指定要求的功能名稱(即只允許選擇兩行)。 –
謝謝!這就是訣竅!還有一個問題。這可確保只能選擇兩個值,但您必須按住Ctrl才能進行第二次選擇。如何在不需要按Ctrl的情況下進行選擇? – Chewtoy