def check_answer(total,current):
if user_entry == books:
current += 1
total += 1
currentscore = current
def __init__(self):
...
self.user_entry = Gtk.Entry()
我想知道如何从user_entry
访问__init__
并在check_answer
中查看,而不会收到此错误。 NameError: global name 'user_entry' is not defined
如果重要,这是一个GUI。另外,每当我点击currentscore
时,如何更改sumbit
的Gui。
submit = Gtk.Button("submit")
submit.connect("clicked",self.check_answer)
答案 0 :(得分:2)
您可以在self
上访问它,就像在__init__
中的实例上设置它一样:
if self.user_entry.get_text() == books:
通过调用Gtk.Entry()
方法从get_text()
对象中获取文本。
请注意,您的check_answer
方法需要使用self
参数才能生效,并且必须接受原始对象作为参数:
def check_answer(self, button):
if self.user_entry.get_text() == books:
current += 1
total += 1
currentscore = current
如果您需要传递一些额外的参数,则需要将这些参数传递给submit.connect()
:
submit.connect("clicked", self.check_answer, total, current)
但怀疑 total
以及current
和currentscore
也是您班级的属性。
或许对Python tutorial on classes的另一种解读会有所帮助?