2012-04-06 99 views
14

我在單選模式下設置了2個獨立的列表框。當我從listboxA中選擇一個項目時,它會突出顯示,但是當我從listboxB中選擇一個項目時,它會突出顯示,並且listboxA中的項目保持活動狀態,但不會突出顯示。我怎樣才能保持突出顯示?如何在tkinter列表框中突出顯示選擇?

回答

21

簡短的回答:設置每個列表框的exportselection屬性False

Tkinter的,其根源在X窗口系統。 X有一個叫做「選擇」的概念,類似於系統剪貼板(更確切地說,剪貼板是「主要」選擇)。默認情況下,幾個tkinter小部件將其選擇導出爲PRIMARY選擇。應用程序一次只能有一個PRIMARY選擇,這就是當您在兩個列表框之間單擊時突出顯示消失的原因。

Tkinter使您可以通過列表框(以及文本和輸入窗口小部件)的exportselection配置選項控制此行爲。將其設置爲False可防止將選擇導出到X選擇,從而允許在不同的窗口小部件獲得焦點時保持其選擇。

例如:

the_listbox = tk.Listbox(..., exportselection=False) 

official tk documentation引用:

exportselection 指定是否在窗口小部件的選擇也應是 X選擇。該值可能具有任何形式,如 Tcl_GetBoolean,如true,false,0,1,yes或no。如果導出了 選擇,則在小部件中選擇將取消選擇當前的X選擇,在小部件外部選擇將取消選擇任何小部件 選擇,並且小部件將在選擇時響應選擇檢索請求 。默認值通常用於導出 選擇的小部件。

相關問題