我正在遵循一些不同的指南,通过编写一个抓取股票价格的小应用程序来重新学习 Tkinter。我遇到的问题是从我的条目小部件变量中调用 .get() 方法。我已经看到了其他一些建议,将所有创建的小部件放在一个函数中,然后在 init 方法中调用该函数,但是我得到了同样的错误,即使在我的入口变量前面使用 self 参数也是如此。我知道这是我在函数之间传递数据的方式的问题,但我无法理解它。这是代码,对不起文字墙:
class MyApp:
def __init__(self, parent):
self.myParent = parent
self.myContainer1 = Frame(parent)
self.myContainer1.pack()
self.createWidgets()
button1 = Button(self.myContainer1, command = self.button1Click)
button1.configure(text = "get quote")
button1.pack()
def createWidgets(self):
root.title("Stock App")
self.symbol = Entry(self.myContainer1)
self.symbol.pack()
self.symbol.focus_set()
def button1Click(self):
stock = symbol.get()
print stock
我什至已经把它简化为最简单的形式,只是让 button1Click 调用了一个回调函数——
def button1Click(self):
print callback()
def callback():
print symbol.get()
这将返回完全相同的错误: NameError: global name 'symbol' is not defined
是不是毁得太早了?我该如何解决?
我已经为 tkinter 引用了多个文档,并且看到了一些很好的修复,但没有一个是可扩展的,或者无法看到它们与我在对象内部使用它的关系。
在此先感谢您的帮助。