2016-02-24 4 views
0

Я в тупике (еще раз) и надеюсь, что смогу найти помощь здесь. im работает над приложением tkinter и сталкивается с ошибкой типа, которую я не могу понять.Ошибка типа Tkinter Toplevel

Это сокращенный вариант исходного кода, который я использовал в качестве теста

класса App():

def __init__(self,master): 

    master.configure(background = '#002e3d') 
    master.title = master.title('Wiki Me!') 
    master.geometry = master.geometry('660x550+200+200') 
    master.resizable(width = False,height = False) 
    master.focus_set() 

    self.button1 = tk.Button(master,text= 'test', bg= 'grey', command= self.search) 
    self.button1.pack() 

def search(self): 
    new_window = new() 

класса нового():

def __init__(self): 
    self.window = tk.Toplevel() 
    self.window.title('find') 

Защиты основного ():

root = tk.Tk() 
window = App(root) 
root.mainloop() 

So запуск этого вызывает ошибку типа «Объект Str не подлежит вызову»

Любая помощь будет принята с благодарностью! Если это имеет значение im на linux и работает python 3.4 с простоя.

+0

Что вы сделали, чтобы попытаться решить эту проблему? Вы понимаете сообщение об ошибке? Вы изучили переменную, вызывающую ошибку, чтобы увидеть, содержит ли она то, что, по вашему мнению, содержит? –

ответ

0

Ошибка, которую вы получаете, связана с чем-то вроде этого.

my_string = "Hello World!" 
my_string() # <-- Causes error 

При изменении заголовка окна с помощью master.title(str) он возвращает пустую строку ''. С этой линией, заголовок главного окна меняется на 'Wiki Me!'

master.title = master.title('Wiki Me!') 

Но значение master.title теперь пустая строка вместо что-то вроде следующего

<bound method Tk.wm_title of <tkinter.Tk object at 0x0000000003077320>> 

Теперь, когда вы создаете новый В окне Toplevel используется заголовок экземпляра Tk, который в этом случае равен master. Поскольку заголовок теперь является строкой вместо естественного метода привязки, это вызывает проблемы при создании экземпляра Toplevel. Все, что вам нужно, это

master.title('Wiki Me!') 
+0

Это полностью исправлено! Огромное спасибо. Очень полезно – Chris

Смежные вопросы