2009-04-16 69 views
14
from Tkinter import * 


master = Tk() 

listbox = Listbox(master) 
listbox.pack() 
listbox.insert(END, "a list entry") 

for item in ["one", "two", "three", "four"]: 
    listbox.insert(END, item) 

listbox2 = Listbox(master) 
listbox2.pack() 
listbox2.insert(END, "a list entry") 

for item in ["one", "two", "three", "four"]: 
    listbox2.insert(END, item) 

master.mainloop() 

上面的代碼創建了一個帶有兩個列表框的tkinter窗口。但是如果你想從兩者中檢索值,就會出現問題,因爲一旦你在一個值中選擇了一個值,它就會取消選擇你在另一箇中選擇的值。如何從兩個Listbox中同時選擇?

這只是開發人員必須忍受的限制嗎?

回答

23

簡短回答:將所有列表框小部件的exportselection屬性的值設置爲False或零。

從列表框控件的a pythonware overview

默認情況下,選擇導出 到X選擇機制。如果 在 屏幕上有多個列表框,那麼這對窮人用戶來說真的會讓 變得糟糕。如果他在一個列表框中選擇了 東西,然後 在另一個列表框中選擇了某個東西,那麼將清除原始選擇 。在這種情況下,通常是一個好主意,可以禁用這種機制 。在 下面的例子中,三個列表框都 用在同一個對話框:

b1 = Listbox(exportselection=0) 
for item in families: 
    b1.insert(END, item) 

b2 = Listbox(exportselection=0) 
for item in fonts: 
    b2.insert(END, item) 

b3 = Listbox(exportselection=0) 
for item in styles: 
    b3.insert(END, item) 

的Tk部件的最終文件是基於Tcl的語言,而不是蟒蛇,但很容易轉化爲蟒蛇。 exportselection屬性可在standard options manual page上找到。

4

exportselection=0當定義一個listbox似乎照顧這個問題。