在python中暂停循环

时间:2013-03-20 08:05:53

标签: python loops pyqt pyside

我有一个使用PySide创建窗口的循环,具体取决于用户输入的数字 每个窗口都会调用其他功能。
在完成第一个窗口所有命令后,我希望第二个窗口打开 那么,Python中是否有一种方法可以告诉循环停止,直到某个标志为True为止,例如

这就是我正在做的事情

for i in range(values):
    self.CreatWindow()      # the function that creates the window



def CreatWindow(self):
    window = QtGui.QMainWindow(self)
    window.setAttribute(QtCore.Qt.WA_DeleteOnClose)
    combo = QtGui.QComboBox(window)
    combo.addItem(" ")
    combo.addItem("60")
    combo.addItem("45")
    combo.activated[str].connect(self.onActivated)  

    btn = QtGui.QPushButton('OK', window)
    btn.clicked.connect(self.ComputeVec)
    window.show()

def onActivated(self, text):
    angle = int(text)

def ComputeVec(self):
    window.close()
    getVecValue(angle)

现在在该函数中,窗口有一些对其他函数的调用,我想在最后一个函数getVecValue中将标志设置为True,这将进行一些计算并存储结果。

2 个答案:

答案 0 :(得分:2)

您可以在ComputeVec中调用CreatWindow,而不是使用不同的循环来打开新窗口 并使用全局变量计数来维护之前创建的窗口的数量。

count = 0
def ComputeVec(self):
    window.close()
    getVecValue(angle)
    global count
    count += 1
    if count in range(values) : 
        self.CreatWindow()

答案 1 :(得分:0)

循环的行为已经像这样,因为函数调用self.CreateWindow等待被调用函数的返回值。

您可以从self.CreateWindow返回适当的值,例如return True并执行此操作:

for i in range(values):
    success = self.CreateWindow()
    if success:
        continue

无论如何,如果self.CreateWindow中没有返回值,则仍会对语句self.CreateWindow()进行评估,结果为None。在达到此结果之前,循环尚未完成。