#!/user/bin/env python3
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets,QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sys
import time
class RefreshWidget(QWidget):
def __init__(self,parent=None):
super(RefreshWidget, self).__init__(parent)
layout=QVBoxLayout()
self.label = QLabel()
self.label.setAlignment(Qt.AlignCenter)
pushButton = QPushButton("pushButton")
pushButton.clicked.connect(self.call_back_btn_func)
layout.addWidget(self.label)
layout.addWidget(pushButton)
self.setLayout(layout)
self.resize(400, 300)
def call_back_btn_func(self):
# 刷新1-10
for i in range(1,11):
self.label.setText(str(i))
# 实时刷新
app.processEvents()
time.sleep(1)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window=RefreshWidget()
window.show()
sys.exit(app.exec())
time sleep() 函数推迟调用线程的运行刷新移动窗口有种卡顿的感觉,还是使用线程刷新比较合适
from PyQt5.QtCore import QThread, pyqtSignal, QDateTime, QObject
from PyQt5.QtWidgets import QApplication, QDialog, QLineEdit, QLabel
import time
import sys
class BackendThread(QObject):
# 通过类成员对象定义信号
update_date = pyqtSignal(str)
# 处理业务逻辑
def run(self):
while 1:
# 刷新1-10
for i in range(1, 11):
self.update_date.emit(str(i))
time.sleep(1)
class Window(QDialog):
def __init__(self):
QDialog.__init__(self)
self.setWindowTitle('PyQt 5界面实时更新例子')
self.resize(400, 100)
self.input = QLabel(self)
self.input.resize(400, 100)
self.initUI()
def initUI(self):
# 创建线程
self.thread = QThread()
self.backend = BackendThread()
# 连接信号
self.backend.update_date.connect(self.handleDisplay)
self.backend.moveToThread(self.thread)
# 开始线程
self.thread.started.connect(self.backend.run)
self.thread.start()
# 将当前时间输出到文本框
def handleDisplay(self, data):
self.input.setText(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())