1

我有一个循环使用 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)

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

4

2 回答 2

2

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

count = 0
def ComputeVec(self):
    window.close()
    getVecValue(angle)
    global count
    count += 1
    if count in range(values) : 
        self.CreatWindow()
于 2013-03-20T12:37:00.563 回答
0

循环的行为确实是这样的,因为函数调用self.CreateWindow等待被调用函数的返回值。

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

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

无论如何,如果 中没有返回值self.CreateWindow,则该语句self.CreateWindow()仍会被评估并导致None. 直到达到这个结果,循环才结束。

于 2013-03-20T08:36:45.337 回答