【发布时间】:2018-04-19 15:53:45
【问题描述】:
编辑:计时器的目的是模拟其他需要很长时间才能执行的代码。想象一下,不是 time.sleep(2) ,而是一个需要很长时间才能执行的函数。
我已经编写了以下测试代码:
from PyQt5.QtWidgets import (QPushButton, QApplication, QMainWindow, QDialog,
QVBoxLayout, QLabel)
import sys
import time
class MyWarnings(QDialog):
''' Generic popup window with text.'''
def __init__(self):
super(MyWarnings, self).__init__()
widget = QLabel('wait')
layout = QVBoxLayout()
layout.addWidget(widget)
self.setLayout(layout)
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.widget = QPushButton('push me')
self.widget.pressed.connect(self.push_me)
self.setCentralWidget(self.widget)
def push_me(self):
a = MyWarnings()
a.show()
time.sleep(2)
self.widget.setText('done!')
app = QApplication(sys.argv)
window = Window()
window.show()
app.exec_()
有一个按钮('push me'),如果用户按下它,2 秒后它会显示“完成!”。
用户按下按钮后,我希望弹出一个窗口说“请稍候”,当这两秒结束时(即当其余代码执行完毕时),它应该会自动关闭
如果我运行上面的代码,确实会弹出一个窗口,但上面没有任何显示:
不过,它确实会在 2 秒后正确关闭。
但是,如果我将 a.show() 更改为 a.exec(),则会得到以下信息:
因此它会显示正确的文本,但不会关闭(事实上,会中断文件其余部分的执行)。
如何让窗口在执行其余代码时显示“等待”而不停止?
【问题讨论】: