Я пытаюсь переключаться между двумя кнопками с помощью tkinter.
У меня есть две кнопки, которые запускают функции. С помощью changeOne нужно только показать ModusAButton и удалить ModusBButton. И наоборот для changeTwo.
Я получил это сообщение об ошибке: _tkinter.TclError: bad window path name ".!button2"
Как правильно это сделать?
ModusAButton = Button(root, text = "ModusA")
ModusBButton = Button(root, text = "ModusB")
def changeOne():
ModusAButton.grid(row=1,column=0,sticky=W, padx=10,pady=10)
ModusBButton.destroy()
def changeTwo():
ModusBButton.grid(row=1,column=1,sticky=W, padx=10,pady=10)
ModusAButton.destroy()
ChangeOneButton = Button(root, text = "ChangeOne",command=changeOne)
ChangeOneButton.grid(row=0,column=0,sticky=W, padx=10,pady=10)
ChangeTwoButton = Button(root, text = "ChangeTwo",command=changeTwo)
ChangeTwoButton.grid(row=0,column=1,sticky=W, padx=10,pady=10)
Я получил это сообщение об ошибке: _tkinter.TclError: неверное имя пути к окну ".! Button2"
Вы ставили from tkinter import * в начале?
Добавьте сообщение об ошибке в вопрос
Да. Также нормально работает первый щелчок по одной из кнопок изменения. Но следующий щелчок по одной из кнопок изменения вызывает сообщение об ошибке.
Как только вы уничтожите виджет, вы больше не сможете вызывать для него методы.
Понятно, но я не могу найти правильный способ справиться с этим.






.destroy() вообще избавляется от кнопки. Чтобы удалить его только временно, используйте grid_forget():
def changeOne():
ModusAButton.grid(row=1,column=0,sticky=W, padx=10,pady=10)
ModusBButton.grid_forget()
def changeTwo():
ModusBButton.grid(row=1,column=1,sticky=W, padx=10,pady=10)
ModusAButton.grid_forget()
Идеально! Это именно то, что я искал! Большое спасибо!
@ K-Doe, если ответ решит вашу проблему, вы можете нажать на нем зеленую галочку. Это означает, что будущим людям с вашей проблемой будет легче увидеть ответ, а также наградить вас 2 репом, а отвечающим 15 реп.
Я буду, но мне нужно подождать еще 2 минуты! Спасибо и хорошего дня.
С какими проблемами вы столкнулись?