如何像实时更新一样显示数据?(pyqt)

2024-09-29 01:32:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个问题,我有一个方法可以连续生成数字,另一个方法会调用这个方法,并在单击按钮时将其显示在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_())

有人能给我建议吗?在


Tags: 方法textselfuidefsysqtguisetupui
1条回答
网友
1楼 · 发布于 2024-09-29 01:32:23

你的while True:是一个阻塞调用:一旦你进入这个函数,你就不会出去了。因此,你的剧本挂在这里。在

一种解决方案是在单独的线程中执行该函数(因此它是非阻塞的);另一种解决方案是使用计时器和信号,如in the answer to the following question所述。在

相关问题 更多 >