Для достижения этой цели нет способа. Но есть и другие способы! С itemconfig(index, fg="gray")
вы можете установить цвет шрифта в серый цвет. Также вы можете привязать свой список к событию <<ListBoxSelection>>
и определить метод обратного вызова. В этом методе просто проверяйте индекс выбранного элемента с помощью .curselection()
, а затем вы можете очистить выбор, если он соответствует индексу элемента.
Фрагмент кода:
import Tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
list = ['one','disable me','two']
self.listbox = tk.Listbox(self,height=len(list))
for item in list:
self.listbox.insert(tk.END, item)
self.listbox.pack()
self.disable_item(1)
def disable_item(self,index):
self.listbox.itemconfig(index, fg="gray")
self.listbox.bind("<<ListboxSelect>>",
lambda event, index=index: self.no_selection(event, index))
def no_selection(self, event, index):
if self.listbox.curselection()[0] in str(index):
self.listbox.selection_clear(index)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
Alternativly вы можете создать свой собственный виджет, который просто содержать и место Label-виджеты, так что вы имеете полный контроль над этими виджетами. Затем вы можете установить состояние метки, как хотите.
Спасибо! Именно то, что я искал. –