2017-11-07 13 views
-1

tkinter와 python 코드를 사용하여 현재 메뉴 레이블의 값을 반환하려고합니다.Python Tkinter가 메뉴 레이블을 문자열로 반환했습니다.

사용중인 직렬 포트 수에 따라 editmenu을 동적으로 업데이트하고 싶지만 무엇을해야할지 모르겠습니다.

나는 이미 list[x].device을 사용해 보았지만, 함수가 호출되면 실제로는 예상대로 x의 과거 값을 사용합니다.

누구에게 아이디어가 있습니까?

감사합니다.

editmenu = Menu(menubar, tearoff=0) 
list = serial.tools.list_ports.comports() 
for x in range(0, len(list)): 
    editmenu.add_command(label=list[x].device, command=lambda:app.setPort()) 
menubar.add_cascade(label="Port", menu=editmenu) 

답변

0

당신은 람다를 통해 포트 또는 라벨을 전달할 수 있습니다

editmenu.add_command(label=list[x].device, 
    command=lambda label=list[x].device:app.setPort(label)) 

당신은 단지 매개 변수로 레이블을 받아 setPort를 정의 할 필요가있다.