nivs

Wait keyboard input PyQt

Feb 4th, 2013
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.62 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from PyQt4 import QtCore, QtGui, uic
  3.  
  4. class WorkWind(QtGui.QWidget):
  5.     def __init__(self):
  6.         QtGui.QWidget.__init__(self)
  7.         uic.loadUi("analiz.ui", self)
  8.         self.ans = True
  9.         self.start()
  10.  
  11.     def loopGenerator(self): # Функция с циклом
  12.         for i in ['first', 'first1']:
  13.             for j in ['sec', 'sec1', 'sec2']:
  14.                 if self.ans:
  15.                     print(i)
  16.                 else:
  17.                     print(j)
  18.                 yield
  19.  
  20.     def start(self):  # Начало обхода цикла
  21.         self._generator = self.loopGenerator()  # Инициализация цикла
  22.  
  23.     def stop(self):  # Завершение цикла
  24.         self.hide()
  25.         self.finish = FinishWind()
  26.         self.finish.show()
  27.  
  28.     def keyPressEvent(self, e):
  29.         flag = False
  30.         if e.key() == QtCore.Qt.Key_Y:
  31.             self.ans = False # Некие действия после нажатия клавиши
  32.             flag = True
  33.         elif e.key() == QtCore.Qt.Key_L:
  34.             self.ans = True
  35.             flag = True
  36.         if flag:
  37.             try:
  38.                 next(self._generator)  # Продвижение на следующую итерацию
  39.             except StopIteration:
  40.                 self.stop()  # Циклы закончились, завершение заданий на этом виджете
  41.  
  42. class FinishWind(QtGui.QWidget):
  43.     pass
  44.  
  45. if __name__ == "__main__":
  46.     import sys
  47.     app = QtGui.QApplication(sys.argv)
  48.     window = WorkWind()
  49.     window.show()
  50.     sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment