2017-02-09 4 views
-2

У меня есть простой код qt4 python, который печатает одну и ту же метку по вертикали. Как я могу задержать (time.sleep) в течение 1 секунды перед следующей меткой печати?Python QT4 - время сна

 
class Ui_Form(object): 
    def setupUi(self, Form): 
     ..... 
     self.pushButton.clicked.connect(self.praxis)  

     self.label_i = 0 
     self.timer = QTimer(self) 
     self.timer.timeout.connect(self.praxis) 
     self.timer.start(1000) 


    def praxis(self): 

     self.lbl1_count = 119 
     for i in range(10): 
      self.lbl_1 = QtGui.QLabel(Form) 
      self.lbl_1.setGeometry(QtCore.QRect(120, self.lbl1_count, 14, 34)) 
      self.lbl_1.setText(_translate("Form", "Something Text", None)) 
      font = QtGui.QFont() 
      font.setPointSize(16) 
      self.lbl_1.setFont(font) 
      self.lbl_1.setObjectName(_fromUtf8("label")) 
      self.lbl1_count += 35 

      self.label_i += 1 
      if self.label_i >= 10: 
       self.timer.stop() 

ответ

1

Вы можете использовать QTimer инициировать вызов функции после й количества времени. Это лучше, чем использование sleep, потому что оно не будет заморожать графический интерфейс, и вы увидите обновления по мере их возникновения.

def __init__(self): 
    ... 
    self.label_i = 0 
    self.timer = QTimer(self) 
    self.timer.timeout.connect(self.update_label) 
    self.timer.start(1000) 

def update_label(self): 
    # Your label updating code above 
    ... 
    self.label_i += 1 
    if self.label_i >= 10: 
     self.timer.stop() 

Это создаст QTimer, который будет вызывать вашу функцию обновления когда-либо в секунду (1000 миллисекунд). В функции он проверяет, была ли функция вызвана 10 раз, а затем останавливает таймер.

+0

Я отредактировал код, чтобы лучше понять структуру. Я добавляю QTimer, но не работает. – Athon

+0

Извините, я хотел сказать, чтобы удалить цикл 'for' в вашей функции обновления. Qtimer заменяет его как своего рода асинхронный для цикла –

+0

Я разместил весь код приложения, и я надеюсь его понять. Я не могу удалить цикл for, потому что мне нужно его итерации строк, меток и т. Д. – Athon

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