2012-12-11 5 views
1

저는 파이썬에 처음 접했고 목록 상자에서 선택된 항목 하나만을 캡처하는 방법을 골똘히 생각하지 못했습니다. 나는 특히 목록 상자에 "명령"옵션이 없기 때문에 내가 선택한 항목이 프로그램에 의해 기록 될 때 이해하지 못합니다. 나는 그렇게 생각한다. 나는 정말로 구속력을 이해하지 못합니다. 나는 그것이 내 문제라고 생각한다.다중 목록 상자에서 선택된 내용을 읽는 방법

다음 코드는 "app"클래스에서 추출되었습니다.

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를 인쇄하면 빈 튜플이 생깁니다. 무엇을해야합니까? 감사합니다, 존 롤랜드

좋아
+2

스크롤바와 목록 상자에 대해 알려 주셔야합니다. 어떤 도서관을 사용하고 있습니까? –

+0

파이썬 2.6.6과 Tk 8.5를 사용하고 있습니다. 스크롤바와리스트 박스는 Tk 라이브러리에있는 위젯입니다 (당연히 가져 왔습니다). –

+0

거의 모든 gui 패키지에는 ListBox와 Scrollbar가 있기 때문에 분명하지 않습니다. –

답변

0

... 내가 과거에 이런 짓을 한 방법입니다 :

def entered(event): 
    global listEx 
    items = map(int, listbox.curselection()) 
    result= listEx[items[0]] 
    print result 
:
listbox.bind("<Double-Button-1>", entered) 

가있는 다음 기능 entered는 다음과 같이 보일 것입니다

listEx은 목록 상자에있는 모든 항목의 목록이고 items = map(int, listbox.curselection()) 섹션은 선택한 항목의 색인 값을 반환합니다 ... 여러 값을 가져 오려면 루프 t에 대해 매우 간단하다고 생각합니다. 의 값 hrough items

편집 :

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

그것은 현실 세계로 훨씬 더 가능성이 있기 때문에 그냥 목록 상자에서 내 마우스 두 번 클릭이 사용하려는 이유를 선택을 인쇄합니다 일반적으로 나는 더블 클릭과 <Return>을 표준리스트 박스 컨트롤로 사용한다. 특히 다수 선택을 사용할 때 특히 그렇다.

+0

목록 상자에서 해당 정보를 제공 할 수 있으므로 목록 상자에 자신의 복사본을 보관할 필요가 없습니다. –

+0

당신은 정말로 유감 스럽습니다. 저는 이전 스크립트를보고있었습니다. 제가 본 첫 번째 스크립트였습니다.이 스타일을 사용한 이유는 동일한 색인을 사용하여 해당 목록에서 정보를 가져 오는 것이 었습니다. – jbaldwin

0

일반적으로 사용자가 이것을 클릭하면 기본 바인딩이 실행된다. 한 번 가능한 한 빨리 인쇄하거나 다른 작업을 수행하려면 <<ListboxSelect>> 이벤트에 바인딩을 만듭니다. 이 이벤트는 키보드를 통해 변경된 경우에도 선택 사항이 변경된 직후에 생성됩니다.

관련 문제