方法内while循环中每次迭代的信息

时间:2016-12-11 19:20:45

标签: python class loops

我有一个类的方法,我有一个while循环,我想在每次迭代时返回一些东西。

class Machine():
    def __init__(self):
        self.ActReturn = 0

    def ExecuteM(self, Var1, Var2):
        while Var1 != 'stop':
             Var2 = Var2 + 3
             self.ActReturn = self.ActReturn + 1
             sleep(0.5)

然后我想打电话给ExecuteM,但要获得"某事"用于执行while循环并能够修改图形界面。

def main(self):
    temp = 0
    self.TM.ExecuteM(var1, var2)
    if self.TM.ActReturn > temp:
        self.result.setText(Result())
        temp = temp + 1

但是肯定它不会这样工作,因为ExecuteM将被执行直到他的while循环结束,然后文本将被设置.... 我怎么能创建这种沟通?

修改

如果我尝试这样的话:

class Machine():
    def __init__(self, result):
        self.result=result

    def ExecuteM(self, Var1, Var2):
        while Var1 != 'stop':
             Var2 = Var2 + 3
             self.result.setText(Result())
             sleep(0.5)

为什么它不起作用? 谢谢 !

1 个答案:

答案 0 :(得分:3)

如果我理解正确:您希望使用while循环来更改某些值,并让这些值更改GUI的状态。为什么将while循环放在一个单独的函数中呢?

我认为如果你的while函数中有一个main循环,并且在每次迭代期间调用setTextExecuteM内的必要逻辑,那么你会更好

只需移动功能,这样每个循环就不会调用setText一次;而是每次迭代调用一次。