объект ‘str’, не допускающий вызова ошибки при создании tkinter.Объект верхнего уровня()

#python #user-interface #tkinter #popupwindow #toplevel

#python #пользовательский интерфейс #tkinter #всплывающее окно #верхний уровень

Вопрос:

В этом фрагменте кода прямо здесь я получаю следующую ошибку. Я искал по всему SO и до сих пор понятия не имею, почему это происходит. В принципе, у меня есть опция в строке меню для возврата домой, и предполагается, что она выводит приглашение, в котором спрашивается, уверен ли пользователь, что он хочет уйти без отправки.

 self.optionsMenu = tkinter.Menu(self, tearoff=0)  # creates 'Options' cascade
self.optionsMenu.add_command(label="Home", command=self.parent.returnHome)

...

def returnHome(self, *args):
    self.page = index.AdminApplication(self.parent)
    self.confirmLeave()


def confirmLeave(self, *args):
    confirmPopup = tkinter.Toplevel(self.parent)
    confirmPopup.title("Confirm Leave Page")
    confirmPopup.tkraise(self.parent)
    question = tkinter.Label(confirmPopup, text="Are you sure you want to leave without submitting your bracket?", font=('Helvetica', '10'))
    question.grid(row=0, column=0, sticky=tkinter.N tkinter.S tkinter.W tkinter.E)
    leave = tkinter.Button(confirmPopup, text="Leave", height=0, width=100, command=self.changeRootSettings(self.page))
    leave.grid(row=1, column=0)
    cancel = tkinter.Button(confirmPopup, text="Cancel", height=0, width=100, command=confirmPopup.destroy())
    cancel.grid(row=1, column=1)
    confirmPopup.focus_force()
  

ошибка:

 $ C:/Users/student/AppData/Local/Programs/Python/Python37-32/python.exe c:/Users/student/Documents/BracketsTool/index.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:UsersstudentAppDataLocalProgramsPythonPython37-32libtkinter__init__.py", line 1705, in __call__
    return self.func(*args)
  File "c:UsersstudentDocumentsBracketsToolCreateBracket.py", line 37, in returnHome
    self.confirmLeave()
  File "c:UsersstudentDocumentsBracketsToolCreateBracket.py", line 23, in confirmLeave
    confirmPopup = tkinter.Toplevel(self.parent)
  File "C:UsersstudentAppDataLocalProgramsPythonPython37-32libtkinter__init__.py", line 2345, in __init__
    self.title(root.title())
TypeError: 'str' object is not callable
  

Боковое примечание: Я знаю, что код на самом деле пока не будет делать то, что я хочу, но я не хочу ничего пробовать, потому что я не могу протестировать его, предварительно не открыв окно правильно.

Комментарии:

1. есть ли у вашего объекта атрибут title , который является строкой?

2. Что это self.title ? Похоже, что это строка.

3. self.title никогда не встречается в моем коде. Это сообщение об ошибке происходит из файла tkinter init .py.

4. Что это self.parent ? Вы убедились, что это то, что вы предполагаете?

5. Да, это переменная экземпляра, которая создается в моем методе init в качестве родительского объекта