Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据从函数移动到类_Python_Tkinter - Fatal编程技术网

Python 将数据从函数移动到类

Python 将数据从函数移动到类,python,tkinter,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 =

我需要将信息从函数传递到类中。该类在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)

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

要在任何类的实例中设置变量的值,只需引用该类即可。您可以将其传递到
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 worker(self, x):
        work = x + 5
        self.testing_label.configure(text=str(work))
更好的做法是页面提供一个接口,这样调用者就不必知道内部小部件的名称。例如:

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
中的一个方法,则可以使其工作如下:

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

创建类的对象并将数据传递到构造函数(init)
worker
是否只执行一次(在实例化
Page1
之前)或多次,并且希望标签每次都更改?它将执行多次,标签每次都需要更改。好问题为什么
text=worker()
worker()不起作用?可能的重复让我走上了正确的轨道,但是标签本身没有改变。我提出了另一个更具体的问题。非常感谢。