将数据从函数移动到类

时间:2017-06-21 18:20:42

标签: python tkinter

我需要将函数中的信息传递给类。该类在tkinter中保存GUI信息,其中一些函数为GUI工作和输出数据。如何向类提供函数的输出?

示例:

class Page1(Page):
    def __init__(self, *args, **kwargs):
       Page.__init__(self, *args, **kwargs)
       #setting up a label to change based off output:
       self.testing_label = tk.Label(self, text='OUTPUT OF WORKER WILL GO HERE', width=20)
       self.testing_label.pack(side="top")

#function that does work:
def worker(x):
    work = x + 5
    return(work)

如何将返回的work放入要在标签中显示的类中?

1 个答案:

答案 0 :(得分:1)

要在任何类的实例中设置变量的值,您只需要对该类的引用。您可以将其传递到worker,也可以确保所有调用worker都有对该页面的引用。

如果没有看到更多代码,就无法给出一个具体的例子。仅根据您提出的问题,您可以这样做:

def worker(x):
    work = x + 5
    return(work)
...
page = Page()
...
result = worker(42)
page.testing_label.configure(text=str(result))

更好的是页面提供一个接口,以便调用者不必知道内部小部件的名称。例如:

class Page1(Page):
    ...
    def set_result(self, string):
        self.testing_label.configure(text=string)
...
page = Page1()
...
result = worker(42)
page.set_result(result)

请注意,如果worker实际上是Page1内部的方法,您可以将其设为:

class Page1(Page):
    ...
    def worker(self, x):
        work = x + 5
        self.testing_label.configure(text=str(work))