摘要:实时追加显示定义一个发送的信号通过类成员对象定义信号处理业务逻辑下面将输出重定向到中实时显示开始创建线程连接信号开始线程将当前时间输出到文本框目前遇到的问题是使用上遇到很多坑像是菜单工具栏各个按钮之间怎么去绑定特定的槽各种报错然后现在想
实时追加显示
code
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import time
import sys
class EmittingStream(QtCore.QObject):
textWritten = QtCore.pyqtSignal(str) #定义一个发送str的信号
def write(self, data):
self.textWritten.emit(str(data))
class BackendThread(QThread):
# 通过类成员对象定义信号
update_date = pyqtSignal(str)
# 处理业务逻辑
def run(self):
while True:
data = QDateTime.currentDateTime()
currTime = data.toString("yyyy-MM-dd hh:mm:ss")
self.update_date.emit( str(currTime) )
time.sleep(1)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralWidget)
self.gridLayout.setObjectName("gridLayout")
self.pushButton = QtWidgets.QPushButton(self.centralWidget)
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
self.textEdit = QtWidgets.QTextEdit(self.centralWidget)
self.textEdit.setObjectName("textEdit")
self.gridLayout.addWidget(self.textEdit, 1, 0, 1, 1)
MainWindow.setCentralWidget(self.centralWidget)
#下面将输出重定向到textEdit中
sys.stdout = EmittingStream(textWritten=self.handleDisplay)
sys.stderr = EmittingStream(textWritten=self.handleDisplay)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "实时显示"))
self.pushButton.setText(_translate("MainWindow", "开始"))
def initUI(self):
# 创建线程
self.backend = BackendThread()
# 连接信号
self.backend.update_date.connect(self.handleDisplay)
# 开始线程
self.backend.start()
# 将当前时间输出到文本框
def handleDisplay(self, data):
cursor = self.textEdit.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
# self.textEdit.setText(data)
cursor.insertText(data + "
")
self.textEdit.setTextCursor(cursor)
self.textEdit.ensureCursorVisible()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
win = Ui_MainWindow()
win.setupUi(MainWindow)
win.initUI()
MainWindow.show()
sys.exit(app.exec_())
result
目前遇到的问题是qt designer使用上遇到很多坑,像是菜单,工具栏各个按钮之间怎么去绑定特定的槽,各种报错. 然后现在想到一种方式是,qt designer纯用来设计页面,信号与槽之间的绑定自己写,修修补补. 参考https://www.cnblogs.com/topsh...
http://www.broadview.com.cn/a...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42058.html
摘要:实时在文本框显示内容引入这个函数绑定定时器自动执行在类中定义一个定时器并在构造函数中设置启动及其信号和槽设置计时间隔并启动计时结束调用方法注意不要加引入这个参考 qt designer使用 开始 新建项目(eric6 项目) 新建窗体(eric6 窗体) 编辑界面(转到qt designer) 保存 编译窗体(转到eric6 窗体) 运行(查看页面效果) 页面缩放效果(qt d...
摘要:最近想做一个实用的图形界面用于查看实时日志本来是准备用开发原本以为功能简单应该很好上手然而在尝试了几次之后彻底放弃了这个想法首先太老了看上去像是上个世纪的应用界面丑陋这是其一如果只是这样还可以接受然而实际编写过程中发现也不是那么友好优质文档 最近想做一个实用的图形界面用于查看实时日志,本来是准备用tkinter开发,原本以为功能简单应该很好上手,然而,在尝试了几次之后,彻底放弃了这个想...
摘要:如果编辑了按钮那么接下来就是通过按钮触发某个动作首先右击窗体生成对话框代码绑定按钮接着在代码栏就会看到生成的文件在中创建绑定再次编译打开文件发现已经绑定服务日志运行中播放暂停退出实时日志服务器开始服务密码退出状态信息类 如果编辑了按钮, 那么接下来就是通过按钮触发某个动作 首先右击窗体,生成对话框代码 showImg(https://segmentfault.com/img/bVbem...
摘要:工具可以直接使用方式安装和的环境配置使用集成开发工具的小白,在安装库以后,还要对和进行环境配置,将其集成到中。如果小白的或安装在其他路径下,则从对应的目录找到,或者在资源管理器中搜索文件找到安装路径。 ...
阅读 2134·2021-11-24 10:21
阅读 1518·2021-09-22 15:25
阅读 3407·2019-08-30 15:55
阅读 949·2019-08-30 15:54
阅读 3700·2019-08-30 14:20
阅读 1900·2019-08-30 14:06
阅读 871·2019-08-30 13:11
阅读 3591·2019-08-29 16:43