Tkinter Toplevel类型错误

时间:2016-02-24 00:39:37

标签: tkinter python-3.4 typeerror toplevel

我很难过(再次),希望我能在这里找到帮助。 我正在处理一个tkinter应用程序并遇到一个我似乎无法弄清楚的类型错误。

这是我用作测试的原始代码的精简版

class 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()

class new():

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

def main():

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

因此运行此操作会导致类型错误 ' Str对象不可调用'

任何帮助将不胜感激! 如果它在linux上运行并且在空闲时运行python 3.4。

1 个答案:

答案 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!')