簡體   English   中英

如何顯示實時更新的數據? (pyqt)

[英]how can i display data like a real time update? (pyqt)

我遇到一個問題,我有一個連續生成數字的方法,另一個方法將調用此方法,並在單擊按鈕時將其顯示在Qtextedit ,但GUI似乎無響應

有我的示例代碼

class Ui_MainWindow(object):
 def setupUi(self, MainWindow):
  MainWindow.setObjectName(_fromUtf8("MainWindow"))
  MainWindow.resize(176, 156)
  self.centralWidget = QtGui.QWidget(MainWindow)
  self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
  self.gridLayout = QtGui.QGridLayout(self.centralWidget)
  self.pushButton = QtGui.QPushButton(self.centralWidget)
  self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)

  self.text = QTextEdit()
  self.gridLayout.addWidget(self.text, 1, 0, 1, 1)

  self.pushButton.clicked.connect( self.Out)


  out = 0
  def number(self):
    i = 0
    while True:
        i += 1
        time.sleep(0.5)
        out = str(i)

  def Out(self):
    time.sleep(0.5)
    self.text.append(self.number())
    QtGui.qApp.processEvents()

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

有人可以給我建議嗎?

while True:您的while True:是一個阻止呼叫:進入此功能后,您就不會外出。 因此,您的腳本掛在這里。

一種解決方案是在一個單獨的線程中執行該功能(因此它將是非阻塞的)。 另一種方法是使用計時器和信號,如以下問題的答案所述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM