2013-03-20 267 views
1

我有一個循環,使用PySide根據用戶輸入的號碼創建窗口 每個窗口都會有一些其他功能的調用。
我想在第一個窗口的所有命令完成後打開第二個窗口。
那麼,有沒有在Python的方式來告訴循環停止,直到一定的標誌是TRUE例如在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,它將執行一些計算並存儲結果。

回答

2

而不是有一個不同的循環來打開新的窗口,你可以調用ComputeVec中的CreatWindow 並使用全局變量計數來維護之前創建的窗口數。

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

工作感謝 – Lily 2013-03-24 12:27:12

0

由於函數調用self.CreateWindow等待被調用函數的返回值,所以循環的行爲已經像這樣。

您可以從self.CreateWindow例如return True返回一個適當的值,並做到這一點:

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

無論如何,如果在self.CreateWindow沒有返回值,聲明self.CreateWindow()仍在評估,結果None。直到達到這個結果,循環才結束。

+0

它不工作,如此下去,並創建另一個窗口 – Lily 2013-03-20 08:54:15

+0

所以我增加一些打印語句,以測試它是否工作 我加的是後'成功= self.CreateWindow print語句()'和當運行腳本時,它會創建所有窗口並在完成第一個窗口的工作前打印 – Lily 2013-03-20 10:28:08

+0

我編輯了主要問題 – Lily 2013-03-20 12:11:00