def check_answer(self, currentscore):
self.user_entry = self.user_entry.get_text()
if self.user_entry == self.books:
self.current += 1
self.total += 1
self.currentscore = self.current
print "right"
else:
print "wrong"
print self.currentscore
print self.total
当我运行它并且我第二次输入文本时File "C:\Python27\guessing.py", line 16, in check_answer
self.user_entry = self.user_entry.get_text()
AttributeError: 'str' object has no attribute 'get_text'
有人可以向我解释一下。为什么它为什么它只能工作一次。以及为什么程序不执行if语句。它只说错了。
self.books = 'hello'
答案 0 :(得分:0)
覆盖包含文本框引用的变量及其内容。因此,当check_answer
第一次运行时,self.user_entry
就是您的文本框,您可以调用其方法get_text()
来检索用户输入的文本。不幸的是,您将此文本分配给同一个变量(self.user_entry =
) - 因此您松开了对文本框的引用。第一次调用后,self.user_entry
是第一次调用时检索到的字符串(str
类的实例)。
使用不同的变量名称,如下所示:
def check_answer(self, currentscore):
self.user_entry_text = self.user_entry.get_text()
if self.user_entry_text == self.books:
self.current += 1
self.total += 1
self.currentscore = self.current
print "right"
else:
print "wrong"
print self.currentscore
print self.total
此外,它可能不必是类的字段,因此您也可以跳过self.
部分。在这种情况下,您可以使用相同的名称(user_entry
),但为了便于阅读,最好调用一个名称能准确说明变量的变量的变量:
user_entry_text = self.user_entry.get_text()
if user_entry_text == self.books: