如何在exec后再显示界面
时间: 2024-03-27 09:41:36 浏览: 18
在应用程序运行时,你可以在 `QApplication.exec_()` 方法之后继续创建和显示界面。这可以通过在主事件循环之后使用 Python 的异步编程技术来实现。
在 PyQT 中,你可以使用 `QTimer` 类来延迟创建和显示窗口。你可以在应用程序启动时启动一个计时器,并在计时器到期时创建和显示窗口。这样可以确保窗口创建和显示在主事件循环之后进行,从而避免应用程序退出。
下面是一个简单的例子,其中我们创建了一个 `MainWindow` 类,并在计时器到期时显示窗口:
```python
import sys
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题和尺寸
self.setWindowTitle("My App")
self.setGeometry(100, 100, 300, 300)
# 添加标签到窗口中
label = QLabel("Hello, World!")
layout = QVBoxLayout()
layout.addWidget(label)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建计时器,并在定时器到期时创建和显示窗口
timer = QTimer()
timer.timeout.connect(lambda: MainWindow().show())
timer.start(1000)
# 启动 Qt 主事件循环,让界面长时间显示
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个 `MainWindow` 类,并在计时器到期时创建和显示窗口。我们使用 `QTimer` 类创建了一个计时器,并使用 `timeout` 信号将计时器连接到一个 lambda 函数。这个 lambda 函数在计时器到期时创建和显示窗口。我们将计时器的时间设置为 1 秒,这意味着窗口将在 1 秒后显示。
当你运行这个例子时,你会看到应用程序启动后,计时器开始计时。在 1 秒后,窗口将被创建和显示在屏幕上。请注意,应用程序将继续运行,直到你手动关闭窗口为止。这是因为在 `QApplication.exec_()` 方法之后,计时器仍在运行,并且主事件循环仍在进行。