我遇到一个问题,我有一个连续生成数字的方法,另一个方法将调用此方法并在单击按钮时显示在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_())
任何人都可以给我建议吗?
答案 0 :(得分:1)
您的while True:
是阻止通话:一旦您输入此功能,您就不会外出。因此,您的脚本会挂起。
一种解决方案是在单独的线程中执行该函数(因此它将是非阻塞的);另一个是使用计时器和信号,如in the answer to the following question所述。