2017-12-21 7 views
0

버튼을 클릭하면 함수가 호출되고 창이 팝업되는 다음 코드가 있습니다. 내가 원하는 것은 탭을 클릭하고 첫 번째 입력 상자에서 두 번째 입력 상자로 이동할 때이 함수를 호출해야합니다. 내 의도는 "클릭"버튼의 필요성을 제거하는 것입니다.Tkinter 버튼 클릭 대신 커서 이동으로 Toplevel 창을 튀는 방법

from Tkinter import * 

def fn_jump(): 
    window3 = Toplevel() 
    window3.title("This window popped out") 
    secondentry = Entry(window3) 
    secondentry.grid(row=0) 
    secondentry.focus_set() 

root = Tk() 
txtbox1 = Entry(root) 
txtbox2 = Entry(root) 

txtbox1.grid(row=0) 
txtbox2.grid(row=1) 
txtbox2.focus_force=fn_jump #This does not work 

btn1 = Button(root, text = 'Click' , command=fn_jump) 
btn1.grid(row=2) 

root.mainloop() 

답변

1

bind을 사용하면 항목에 포커스가있을 때 기능을 실행할 수 있습니다.

txtbox2.bind('<FocusIn>', fn_jump) 

바인드, 당신이 이벤트 인수에 동의해야합니다 호출하는 기능을 사용하기 때문에

def fn_jump(event=None): 
+0

덕분에 그 정의를 변경하려면이 그러나 이상한 문제가 작동합니다. 팝업 창을 닫으면 다른 창을 계속 만듭니다. 이것은 반복적으로 발생하며 하위 창을 닫으려면 루트 창을 닫아야합니다. – mdabdullah

+0

그게 당신이 원하는거야 : 때마다 그것이 팝업을 만드는 초점을 맞 춥니 다. 포커스를 다른 곳에 두거나 수표를 붙이기 위해 함수를 디자인하십시오. 이 프로젝트의 목표가 무엇인지 알지 못하면 더 이상 당신을 도울 수 없습니다. – Novel

+0

'txtbox2.bind ('', fn_jump) ' 예상대로 작동합니다. 문제는 내가 자식 창을 닫을 때 커서가 자동으로 txtbox2로 돌아가서 자식 창이 반복해서 만들어 졌기 때문입니다. 나는 당신의 대답을 받아 들일 것입니다. – mdabdullah