Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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_Loops_Pyqt_Pyside - Fatal编程技术网

在python中暂停循环

在python中暂停循环,python,loops,pyqt,pyside,Python,Loops,Pyqt,Pyside,我有一个循环,根据用户输入的数字使用PySide创建窗口 每个窗口都会调用一些其他函数。 我希望在完成属于第一个窗口的所有命令后打开第二个窗口。 那么,在Python中有没有一种方法可以告诉循环停止,直到某个标志为真 这就是我要做的 for i in range(values): self.CreatWindow() # the function that creates the window def CreatWindow(self): window = QtG

我有一个循环,根据用户输入的数字使用PySide创建窗口 每个窗口都会调用一些其他函数。
我希望在完成属于第一个窗口的所有命令后打开第二个窗口。
那么,在Python中有没有一种方法可以告诉循环停止,直到某个标志为真

这就是我要做的

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,它将执行一些计算并存储结果

由于函数调用
self.CreateWindow
等待被调用函数的返回值,因此循环的行为已经是这样了

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

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

无论如何,如果在
self.CreateWindow
中没有返回值,则仍会对语句
self.CreateWindow()
求值,结果为
None
。直到达到此结果,循环才结束。

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

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

因此,我添加了一些print语句来测试它是否工作,我添加的是在
success=self.CreateWindow()
之后的print语句,当运行脚本时,它会创建所有窗口,并在第一个窗口上完成工作之前进行打印