【发布时间】:2014-12-03 21:16:56
【问题描述】:
我的 Tkinter 窗口中有一个按钮,单击该按钮时需要调用两个函数:.get() 用于存储输入框值,.destroy() 以便在按下按钮时关闭窗口。
我一定是做错了什么,因为无论我将.destroy() 放在我的分组函数中,.get() 还是将.destroy() 作为按钮中的唯一命令,我都会收到此错误:
AttributeError: 'GuardianLocator' object has no attribute 'frame'
我相信我的代码与本网站上的其他答案几乎相同,所以我不确定为什么 .destroy() 不起作用...
from tkinter import *
class GuardianLocator:
def __init__(self, master):
self._name = ""
frame = Frame(master)
frame.grid()
master.title("GUARDIAN LOCATOR")
self.locator_label = Label(frame, text="Which Sailor Guardian are you looking for?", width=40, height=2)
self.locator_label.grid()
self.entry = Entry(frame)
self.entry.grid()
self.button1 = Button(frame, text="Search", command=self.guardian_name, pady=2)
self.button1.grid()
def guardian_name(self):
self._name = self.entry.get()
self.frame.destroy()
return self.entry.get()
编辑
当我根据答案对 self.frame 进行建议的更改时,程序会运行,但是当我单击按钮时,我会收到此错误-
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1482, in __call__
return self.func(*args)
File "C:\Users\david\PycharmProjects\Sailor Moon Hunt\guardian_locator.py", line 25, in guardian_name
return self.entry.get()
File "C:\Python34\lib\tkinter\__init__.py", line 2484, in get
return self.tk.call(self._w, 'get')
_tkinter.TclError: invalid command name ".45213328.45795632"
它似乎指的是 .get() 调用,但在我进行 self.frame 更改之前它工作正常。有谁知道这个错误是什么意思?
【问题讨论】:
标签: python button tkinter destroy