2017-02-09 1 views
-2

나는 동일한 레이블을 수직으로 인쇄하는 간단한 python qt4 코드를 가지고 있습니다. 다음 인쇄 레이블 전에 1 초 동안 지연 (time.sleep) 할 수 있습니까?Python QT4 - time sleep

 
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을 사용하면 x 시간 후에 함수 호출을 트리거 할 수 있습니다. sleep을 사용하는 것보다 낫습니다. GUI를 고정시키지 않고 업데이트가 발생하기 때문입니다.

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() 

이 귀하의 업데이트 기능 지금까지 초 (1000 밀리 초)를 호출하는 QTimer를 생성합니다. 이 함수는 함수가 10 번 호출되었는지 확인한 다음 타이머를 중지합니다.

+0

구조를 더 잘 이해할 수 있도록 코드를 편집했습니다. 나는 QTimer를 추가하지만 작동하지 않습니다. – Athon

+0

죄송합니다. 업데이트 기능에서 'for' 루프를 제거하려고합니다. Qtimer는 루프 –

+0

을 위해 비동기로 대체합니다. 모든 코드를 게시 했으므로 이해할 수 있기를 바랍니다. 줄 편집, 레이블 등을 반복하기 위해 루프를 제거 할 수 없습니다. – Athon