1

私はPythonに非常に慣れていないため、リストボックスから選択された1つのアイテムだけをキャプチャする方法、さらには複数のアイテムをキャプチャする方法がわかりません。リストボックスには「コマンド」オプションがないため、選択した項目がプログラムによって記録されるタイミングが特にわかりません。その通りだと思います。束縛がよくわかりません。それが私の問題だと思います(とりわけ!)。

次のコードは、私の「アプリ」クラスから抽出されたものです。

    l = Listbox(self, height=10, selectmode=EXTENDED)
    # Selectmode can be SINGLE, BROWSE, MULTIPLE or EXTENDED. Default BROWSE
    l.grid(column=0, row=11, sticky=(N,W,E,S))

    s = Scrollbar(self, orient=VERTICAL, command=l.yview)
    s.grid(column=0, row=11, sticky=(N,S,E))
    l['yscrollcommand'] = s.set

    for i in range(1,101):
        l.insert('end', 'Line %d of 100' % i)

    self.ichoose = l.curselection()

専門家ならわかると思いますが、app.ichoose を印刷すると、空のタプルが得られます。私は何をする必要がありますか?ありがとう、ジョン・ローランド

4

2 に答える 2

0

通常、ユーザーがアイテムをクリックするとアイテムが選択され、デフォルトのバインディングが起動します。それが発生したらできるだけ早くそれを印刷する(または他のことをする)場合は、イベントにバインディングを作成します<<ListboxSelect>>。このイベントは、キーボードで変更した場合でも、選択が変更された直後に生成されます。

于 2012-12-11T12:03:17.717 に答える
0

わかりました...私が過去にこれを行った方法は次のとおりです。

listbox.bind("<Double-Button-1>", entered)

関数enteredは次のようになります。

def entered(event):
    global listEx
    items = map(int, listbox.curselection())
    result= listEx[items[0]]
    print result

listExリストボックス内のすべてのエントリのリストであり、items = map(int, listbox.curselection())セクションは選択されたエントリのインデックス値を返します...複数の値を取得したい場合は、値をforループするのは非常に簡単だと思いますitems

編集:

def entered(event):
    print listbox.selection_get()

リストボックスからの選択を印刷するだけです。ダブルマウスクリックを使用するのが好きな理由は、実際に使用する可能性がはるかに高いためです。通常、ダブルクリックを<Return>標準のリストボックスコントロールとして使用します。複数の選択肢をあなたのものとして

于 2012-12-11T10:23:32.570 に答える