使用字典值调用不同的函数

时间:2016-11-30 12:12:34

标签: python tkinter python-3.5

我有两个班级:

  • 一个称为In [91]: my_det(np.arange(9).reshape(3,3)) Out[91]: 0.0 Stock()averageopenaveragehighaveragelow类的方法。
  • 一个Stock()AppGUI()文件。

问题:我想调用Tkinter类中Stock()类的每个平均方法

StartPage

如何调用Class StartPage(): ...... ...... # calculate check boxes button self.button_calculate = tk.Button(self, text="Calculate",command=self.average) self.button_calculate.pack() self.button_calculate.place(x=180, y=300) self.Google = Stock() button_dict = {`'Average Open': self.Google.averageopen, 'Average High': self.Google.averagehigh, 'Average Low': self.Google.averagelow`} 中的值? 什么时候这样做,它返回button_dict,但我想只调用函数本身?

2 个答案:

答案 0 :(得分:0)

您可以通过访问字典值并传入任何其他参数的参数来调用它:

button_dict['Average Open'](parameter, parameter, ...)

如果它正在返回PY_VAR0,那与你如何调用它无关。无论如何调用,该函数都将返回相同的内容。

通常,当您看到PY_VAR0时,这意味着您在使用值StringVar的实例 >

以下代码将打印“PY_VAR0”

foo = tk.StringVar(value="this is foo")
print(foo)

以下将打印“this is foo”:

foo = tk.StringVar(value="this is foo")
print(foo.get())

foo =

答案 1 :(得分:-2)

您可以使用eval()函数动态调用字典中包含的函数。这是一个简单的例子:

class Stock(object):
    def averageopen(self):
        return True

s = Stock()
the_dict = {}
the_dict.update({'Average Open':s.averageopen})

#see that we're about to execute
print 's.' + the_dict['Average Open'].__name__ + '()'

#now execute it
print eval('s.' + the_dict['Average Open'].__name__ + '()')

运行此代码将返回存储在dict中的函数引用的值:True

您可以通过在'()'之间添加参数将参数连接到字符串中。必要时迭代。