0

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

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

类应用程序():

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

所以运行它会导致类型错误'Str object is not callable'

任何帮助将不胜感激!如果它在 linux 上很重要并在空闲状态下运行 python 3.4。

4

1 回答 1

0

您收到的错误是由于发生了这样的事情。

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

当您使用它更改窗口的标题时,master.title(str)它会返回一个空字符串''。使用这一行,主窗口的标题更改为'Wiki Me!'

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

但是 for 现在的值master.title是一个空字符串,而不是像下面这样

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

现在,当您创建一个新的顶层窗口时,它使用Tk实例的标题,在这种情况下是master默认的。因为标题现在是一个字符串,而不是自然绑定方法,这会在创建 Toplevel 实例时导致问题。所有你需要的是

master.title('Wiki Me!')
于 2016-02-24T04:01:48.453 回答