Python 将数据从函数移动到类
我需要将信息从函数传递到类中。该类在tkinter中保存GUI信息,函数为GUI工作并输出数据。如何给类提供函数的输出 例如: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 =
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()不起作用?可能的重复让我走上了正确的轨道,但是标签本身没有改变。我提出了另一个更具体的问题。非常感谢。