我有一个使用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,这将进行一些计算并存储结果。
答案 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
。在达到此结果之前,循环尚未完成。