2009-04-16 13 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() 

上記のコードは、2つのリストボックスを持つtkinterウィンドウを作成します。しかし、両方から値を取得する場合は、値を選択するとすぐに、他の値で選択した値の選択が解除されるため、問題があります。2つのリストボックスから同時に選択する方法は?

これは開発者が抱えなければならない制限事項ですか?

答えて

23

短い答え:すべてのリストボックスウィジェットのexportselection属性の値をFalseまたは0に設定します。リストボックスウィジェットのa pythonware overviewから

デフォルトでは、選択は、Xの選択機構に を輸出しています。 画面に複数のリストボックスがある場合、これは実際には貧弱なユーザーのために を上手く処理しません。 1つのリストボックス内で 何かを選択し、次に が別のリストボックスで何かを選択すると、 元の選択がクリアされます。このような場合、この メカニズムを無効にすることは通常、 です。 次の例では、3つのリストボックスには、同じダイアログで使用 です:

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言語ではなく、パイソンに基づいていますが、Pythonに変換するのは簡単です。 exportselection属性はstandard options manual pageにあります。

4

exportselection=0リストボックスを定義すると、この問題が処理されるようです。

関連する問題