2013-03-20 3 views
1

У меня есть цикл, который создает окна с использованием PySide в зависимости от числа, которое вводит пользователь . Каждое окно будет иметь некоторые вызовы для других функций.
Я бы хотел, чтобы второе окно открылось после того, как все команды принадлежат первому окну.
Итак, есть ли способ в Python сказать петлю, чтобы остановить до определенного флага Правда, напримерПриостановка цикла в 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, которая будет выполнять некоторые вычисления и сохранять результат.

ответ

2

Вместо того чтобы иметь новый цикл для открытия новых окон, вы можете вызвать CreatWindow в ComputeVec и использовать подсчет глобальной переменной для поддержания количества окон, созданных ранее.

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

Это сработало спасибо – Lily

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

+0

поэтому я добавляю некоторые операторы печати, чтобы проверить, если он работает то, что я добавил это заявление после печати 'успеха = self.CreateWindow()' и при запуске скрипта он создает все окна и печатает до окончания работы в первом окне – Lily

+0

Я отредактировал главный вопрос – Lily

Смежные вопросы