class App(QWidget): global tem_button tem_button = True def __init__(self): super().__init__() self.open_camera_1() 打开程序弹出正在打开摄像头窗口 self.open_camera_1() 执行完毕窗口自动关闭
时间: 2024-03-02 07:54:10 浏览: 86
根据您的描述,我猜测您想要实现一个基于PyQt5的GUI程序,在程序开始执行时弹出一个窗口显示“正在打开摄像头”等提示信息,等程序执行完成后窗口自动关闭。以下是一个简单的实现思路:
1. 创建一个继承自`QWidget`的类,并在类的构造函数中创建一个新窗口,显示“正在打开摄像头”等提示信息。
2. 在构造函数中开启一个新线程执行`open_camera_1`函数。
3. 在`open_camera_1`函数中编写打开摄像头的代码,并在打开摄像头之前调用`time.sleep`模拟程序执行时间。
4. 在`open_camera_1`函数中调用窗口对象的`close`方法,关闭窗口。
以下是实现该思路的示例代码:
```python
import sys
import time
import threading
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt
class CameraWindow(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel("正在打开摄像头...")
self.label.setAlignment(Qt.AlignCenter)
layout = QVBoxLayout()
layout.addWidget(self.label)
self.setLayout(layout)
self.setWindowTitle("打开摄像头")
def closeEvent(self, event):
# 禁止关闭窗口
event.ignore()
class App(QWidget):
def __init__(self):
super().__init__()
self.camera_window = CameraWindow()
self.camera_window.show()
t = threading.Thread(target=self.open_camera_1)
t.start()
def open_camera_1(self):
# 模拟程序执行
time.sleep(5)
# 关闭窗口
self.camera_window.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
```
在上述代码中,`CameraWindow`类是用于创建新窗口的类,其中包含一个`Label`控件用于显示提示信息。`App`类是主程序类,其中创建了一个`CameraWindow`对象,并开启一个新线程执行`open_camera_1`函数。在`open_camera_1`函数中,使用`time.sleep(5)`模拟程序执行时间,然后调用`self.camera_window.close()`方法关闭窗口。最后进入主循环等待窗口关闭。
阅读全文