Когда вы привязываете функцию к клавише, функция вызывается с одним позиционным параметром, который представляет событие, которое вызвало привязку.
Рассмотрим этот код:
root.bind("<Control-Shift-A>", self.AddNewEntry)
Когда вызывается self.AddNewEntry
, tkinter будет вызывать его с одним параметром, который является объектом, представляющим событие (например: self.AddNewEntry(event)
). Этот объект имеет такие свойства, как виджет, который получил событие, координаты x / y указателя мыши, нажатая клавиша и т. Д.
Вы назвали этот параметр master
, что заставляет меня думать, что вы ожидаете, что этот код каким-то образом представляет главное или корневое окно. И действительно, вы передаете этот параметр в addComic
, который затем пытается использовать этот объект события в качестве главного окна для окна Toplevel
. Поскольку вы не можете использовать объект события как мастер для другого окна, вы получаете сообщение об ошибке.
Хотя вы можете изменить привязку, передав master
функции, поскольку вы храните master
в качестве атрибута класса, вам не нужно это делать - AddNewEntry
уже знает, что master
является.
Решение состоит в том, чтобы переписать AddNewEntry
, чтобы принять параметр event
и игнорировать его, и передать self.master
до addComic
:
def AddNewEntry(self, event):
addComic(self.master)