为什么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,提问作者キラル
相关产品推荐
相关产品推荐

