You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么PyQt5的QTextBrowser显示无空格长字符串时会自动换行?

问题原因

QTextBrowser 默认开启自动换行,默认换行策略为 QTextOption.WrapAtWordBoundaryOrAnywhere,会在空格、标点符号等位置自动换行,所以你的连续长字符串中出现括号、斜杠类特殊符号时就会触发非预期换行,和字符串本身无关,所以用repr()处理没有效果。

解决方法

修改QTextBrowser的换行模式为不换行即可,修改后的代码如下:

from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtGui import QTextOption
import sys


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(640, 720)
        self.textBrowser = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser.setGeometry(QtCore.QRect(45, 85, 550, 550))
        self.textBrowser.setObjectName("textBrowser")
        # 新增设置不换行
        self.textBrowser.setWordWrapMode(QTextOption.NoWrap)


class Dlg(QDialog, Ui_Dialog):
    def __init__(self, parent=None):
        super(Dlg, self).__init__(parent)
        self.setupUi(self)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    dlg = Dlg()
    dlg.show()
    s = "CC0wqqqqqqqqqqqqwqwm0QCYYXYUYcjtnvn(lii;!Iff/fczc|1~,i-?uX)txft?_\/1r/fU0mwwwwwwwwwwwwwwwwwwwwwwwwww"
    dlg.textBrowser.append(s)
    sys.exit(app.exec_())

设置后如果字符串长度超出textBrowser的宽度,会自动出现水平滚动条,字符串不会被强制换行。

内容的提问来源于stack exchange,提问作者キラル

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:06:05