我正在尝试将python3
中的函数定义为
from gi.repository import Gtk, GObject
class EntryWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Generate Init")
self.set_size_request(100, 50)
self.nument = Gtk.Entry()
<did some work>
def get_nument(self,nument):
numele= self.nument.get_text()
print(numele)
<did some more work and define a function again>
def get_specs(self,spec):
numspec=self.spec.get_text()
导致错误:
Traceback (most recent call last):
File "hw3.py", line 42, in get_nument
self.spec.connect("activate",self.get_specs)
AttributeError: 'EntryWindow' object has no attribute 'get_specs'
我是python的新手,所以努力理解自我的范围和这个错误的起源。另外,根据this post,我可能通过在函数内声明一个函数来做一些非常有趣的事情。
我需要的是定义一个函数(get_specs
),它将由另一个函数(get_nument
)调用。
这实际上是一个gtk3代码,但我猜它是python的问题。 可以看到完整的代码,在其当前状态here。 请帮助。
答案 0 :(得分:0)
此:
File "hw3.py", line 42, in get_nument
self.spec.connect("activate",self.get_specs)
在get_nument
中,将get_specs
引用为get_specs
。所以,试试:
self.spec.connect("activate", get_specs)
这只是你在get_nument
范围内声明的函数,所以它就像任何变量一样。一个例子:
def foo(self):
x = 34
def bar():
# ...
# Use x:
print(x)
# Use bar:
print(bar()) # Note: no self, because bar isn't part of self.