0

我正在遵循一些不同的指南,通过编写一个抓取股票价格的小应用程序来重新学习 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 引用了多个文档,并且看到了一些很好的修复,但没有一个是可扩展的,或者无法看到它们与我在对象内部使用它的关系。

在此先感谢您的帮助。

4

2 回答 2

2

据我所知,在您的 button1Click 方法中,您需要添加 self ,如下所示:

def callback():
    print self.symbol.get()
于 2013-08-29T21:13:31.857 回答
2

您缺少self.进行回调:

def callback():
    print self.symbol.get()

反而。

于 2013-08-29T21:08:24.333 回答