2014-01-05 3 views
0

'활성'이라고 불러야 할 항목이 확실하지 않습니다. '활성'상태를 유지하기 위해 일단 클릭하면 스크롤바를 가질 수 있습니까? 또 다른 말은 스크롤바를 클릭하면 키보드 (왼쪽/오른쪽 화살표 키) 또는 마우스로 스크롤 막대를 움직일 수 있기를 원합니다. 이것이 가능한가? 그렇다면 그것을 성취하기 위해 무엇을해야합니까?파이썬 tkinter 스크롤 막대 활성 상태

답변

1

기술적으로는 스크롤바에 키보드 포커스를 부여한 다음 사용자 정의 바인딩을 추가하는 것이 가능해야합니다. 그 일은 상당히 특이한 일입니다. 스크롤바는 Windows 및 Mac에서 기본 위젯으로 그려지기 때문에 이러한 플랫폼에서는 불가능할 수도 있습니다.

대체로 원하는 것은 응용 프로그램 전체에 일부 바인딩을 설정하거나 일반적으로 캔버스 또는 텍스트 위젯과 같이 포커스를 얻는 일종의 위젯에 설정하는 것입니다. 바인딩은 xviewyview 명령을 호출하여 스크롤 방법을 알려주는 인수를 제공 할 수 있습니다. 스크롤바는 정확히 무엇입니까?

1

당신은 예를 들어 다음과 같이이를 달성 할 수

from Tkinter import * 


root = Tk() 
scrollbar = Scrollbar(root, takefocus = True) 
scrollbar.pack(side = RIGHT, fill=Y) 

mylist = Listbox(root, yscrollcommand = scrollbar.set) 

scrollbar.bind("<Down>", lambda event: mylist.yview_scroll(1, "units")) 
scrollbar.bind("<Up>", lambda event: mylist.yview_scroll(-1, "units")) 
scrollbar.bind("<Button-1>", lambda event: scrollbar.focus_set()) 

for line in range(100): 
    mylist.insert(END, "This is line number " + str(line)) 

mylist.pack(side = LEFT, fill = BOTH) 
scrollbar.config(command = mylist.yview) 

mainloop() 

takefocus 플래그는 초점을 유지하기 위해 스크롤을 할 수 있습니다. 포커스는 "<Button-1>" 이벤트로 설정됩니다. 키 누름도 이벤트에 의해 처리되고 스크롤 가능한 객체에서 원하는 스크롤 동작을 호출합니다.

관련 문제