| 
 | 
 
 
发表于 2023-6-29 21:25:04
|
显示全部楼层
 
 
 
您可以尝试使用QPlainTextEdit控件代替QTextEdit控件,并结合QApplication.processEvents()方法来实现每次循环都同步显示写入的内容,包括历史写入内容。代码示例如下: 
 
- from PyQt6.QtCore import Qt
 
 - from PyQt6.QtWidgets import QApplication, QMainWindow, QPlainTextEdit
 
  
- class MainWindow(QMainWindow):
 
 -     def __init__(self):
 
 -         super().__init__()
 
 -         self.body = QPlainTextEdit(self)
 
 -         self.setCentralWidget(self.body)
 
  
-     def append_text(self, text):
 
 -         cursor = self.body.textCursor()
 
 -         cursor.movePosition(Qt.TextCursor.End)
 
 -         cursor.insertText(text)
 
 -         self.body.setTextCursor(cursor)
 
 -         QApplication.processEvents()
 
  
- app = QApplication([])
 
 - window = MainWindow()
 
  
- for i in range(5):
 
 -     name = f"User {i}"
 
 -     window.append_text(f"{name}邮件已发送\n")
 
  
- window.show()
 
 - app.exec()
 
  复制代码 
 
在上述示例代码中,我们自定义了一个MainWindow类继承自QMainWindow,在窗口中使用QPlainTextEdit作为控件来显示文本内容。在append_text()方法中,我们通过设置文本光标的位置和插入文本来实现每次循环都将内容追加到控件中,并在每次追加后调用QApplication.processEvents()方法来确保界面刷新。 
 
请注意,为了保证界面的及时响应,建议在循环较快或者需要频繁更新界面的情况下,适当添加QApplication.processEvents()方法进行界面刷新。 |   
 
 
 
 |