python QThread实现,ui界面点击查询按钮,显示当前时间,写在一个.py文件中
时间: 2024-12-21 19:24:45 浏览: 6
Python的`QThread`是PyQt库中的一个模块,用于实现多线程编程。当你需要在GUI用户界面上有一个响应用户的查询操作(比如点击查询按钮),而这个操作可能会比较耗时,不想阻塞主线程影响UI的响应速度,这时就可以用到`QThread`。
下面是一个简单的例子,假设我们有这样一个需求:当用户点击查询按钮时,一个新的线程会被启动,该线程会获取当前时间并更新到UI上:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout
from PyQt5.QtCore import Qt, QThread, pyqtSignal
class TimeGetter(QThread):
# 创建一个信号,用于传递数据
time_signal = pyqtSignal(str)
def run(self):
import time
self.time_to_send = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
self.time_signal.emit(self.time_to_send) # 发送信号
class MainWidget(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
layout = QVBoxLayout()
self.query_button = QPushButton("查询当前时间")
self.query_button.clicked.connect(self.get_time)
layout.addWidget(self.query_button)
self.time_label = QLabel("")
layout.addWidget(self.time_label)
self.setLayout(layout)
def get_time(self):
thread = TimeGetter() # 创建新线程
thread.time_signal.connect(self.update_time_label) # 连接信号与槽
thread.start() # 启动线程
def update_time_label(self, time_str):
self.time_label.setText(time_str) # 更新UI显示的时间
if __name__ == "__main__":
app = QApplication([])
widget = MainWidget()
widget.show()
app.exec_()
阅读全文