在使用PyQt6的时候会发现如果代码是在另外一个线程中的想要打印,正常情况下不能打印到界面,但是又有打印到界面显示的需求,这里就需要信号来进行打印,直接上代码
首先是创建线程和信号:
## 开始结果处理
def StartCheckXlsx(self):
xlsttempFile = self.xlstFile_Edit.text()
xlstSaveFile = self.xlstSaveFile_Edit.text()
LocalFile = self.loalFile_Edit.text()
if xlsttempFile == '' or xlstSaveFile == '' or LocalFile == '':
QMessageBox.about(self, "EROOR", "项目文件和路径等信息不能为空")
else:
# 创建线程
self.thread = JarCheck( xlsttempFile, xlstSaveFile, LocalFile)
# 连接信号
self.thread._signal.connect(self.JarCheck_update_item)
# 开始线程
self.thread.RunMain()
创建完信号和线程,就可以在对应的线程中添加代码,进行打印:
class JarCheck(QThread):
_signal = pyqtSignal(str)
def CheckFalseAlarm(self, urlbacktext, url):
if urlbacktext.find('has no known vulnerabilities') >=0:
self.NewestId.append('')
self._signal.emit('False Positive \n')
QApplication.processEvents()
return True
return False
通过调用对_signal设置内容并调用QApplication.processEvents()即可在线程中打印数据且不会造成主界面的卡死。
代码很简单,做个记录方便下次需要的时候直接拿来调用
?
?