"button1"버튼을 누르면 Listbox "listbox1"의 바인딩이 변경됩니다. 단추를 처음 클릭하면 목록 상자에서 선택한 요소에 포커스를 두지 않고 목록 상자가 비활성화됩니다 (listbox1.bindtags((listbox1, Listbox, ".", "all"))
통해).위젯을 다시 바인딩
두 번째 클릭은 <<ListboxSelect>>
바인딩 목록 상자를 리 바인드해야합니다.
Q : 목록 상자를 리 바인드하려면 어떻게해야합니까? 나는 간단하게하려고 노력했다 listbox1.bindtags
의 인수를 뒤집어 쓰는 listbox1.bind
,, googled, 여기 보았다. 그리고 나는 아직도 그것을 이해할 수 없다.
from tkinter import *
root = Tk()
buttontext = StringVar()
buttontext.set("Disable")
frame_1 = Frame(root, bg="white")
frame_1.pack()
def print_(event):
print("success")
listbox_1 = Listbox(frame_1, activestyle="none", selectmode=SINGLE, height=6, width=11)
listbox_1.pack()
listbox_1.bind("<<ListboxSelect>>", print_)
listbox_1.insert(0, "test1")
listbox_1.insert(1, "test2")
def toggle_button():
if buttontext.get() == "Disable":
listbox_1.bindtags((listbox_1, Listbox, ".", "all"))
listbox_1["exportselection"] = False
buttontext.set("Normal")
elif buttontext.get() == "Normal":
listbox_1.bind("<<ListboxSelect>>", print_)
listbox_1["exportselection"] = True
buttontext.set("Disable")
button = Button(frame_1, textvariable=buttontext, command=toggle_button)
button.pack()
root.mainloop()
이 코드는 실행되지 않으며 많은 오류가 있습니다. 'buttntxt'가 정의되어 있지 않고'do_smth'가 정의되어 있지 않습니다. 18 행에 구문 오류가 있습니다. 'buttntxt.get()'이 (가) 유효한 문이 아니므로 클래스를 바인드 태그로 제공 할 수 없습니다. ... –
주변 환경에 관한 것이 아니라,이 코드는 실행되지 않지만 acutal 코드는 실행된다는 것을 알고 있습니다. 내 질문은 어떻게 다시 바인딩하는 위젯입니다. btw buttntxt와 buttontxt가 같은 변수 인 경우, 실수입니다. – tumper
위젯을 리바 인하려면 간단히'bind' 메소드를 호출하십시오. 당신이 그것을 시도하고 그것이 효과가 없다고 주장하기 때문에, 우리는 당신이 실제로 시도한 것을보아야 만합니다. 어떤 척척의 코드가 아닙니다. –