Я хочу, чтобы мой список «listbox1» менял привязку при нажатии кнопки «button1». Первый щелчок на кнопке «отключает» список, не теряя фокуса на выбранном элементе в списке через listbox1.bindtags((listbox1, Listbox, ".", "all"))
.re-binding a widget
Второй щелчок должен переустановить список с привязкой <<ListboxSelect>>
.
Вопрос: Как переустановить список? Я попытался сделать простой listbox1.configure
, listbox1.bind
, отменив аргументы в listbox1.bindtags
, 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'. Поскольку вы утверждаете, что вы пробовали это, и это не сработало, нам нужно посмотреть, что вы _actually_ пытались, а не какой-то притворяющийся код. –