我很难过(再次),希望我能在这里找到帮助。 我正在处理一个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。
答案 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!')