问题描述:
在进行pyqt5窗口的设置时,对由于项目中需要将识别内容显示到文本框当中且按照每个识别内容一行行显示,此时则需要对文本框设置垂直和水平滚动条,对于本文出现的问题:设置垂直滚动条时不会出现无法显示的情况,但是设置水平滚动条时虽然设置为ScrollBarAsNeeded或者ScrollBarAlwaysOn,但是当一行文本内容超过后仍然无法显示。
问题原因:
对于这个问题,其实是pyqt5中对于水平方向上的文本是软换行,即当你向文本框中append内容的时候,文本框自动会不按回车键就能自动换行。
解决方法:
我们通过方法setLineWrapMode(0),来设置换行模式,当为该方法传递参数0时,我们可以发现水平滚动条起作用了,但此时换行必须强制换行。(这里无伤大雅,在append追加内容时就换了。)
下面即为解决此问题时设置的代码:
# 文本框显示
self.textBrowser = QtWidgets.QTextBrowser(MainWindow)
self.textBrowser.setGeometry(QtCore.QRect(902, 130, 240, 510))
self.textBrowser.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.textBrowser.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
# 设置换行模式
self.textBrowser.setLineWrapMode(0)
self.textBrowser.setObjectName("textBrowser")
不设置换行模式时,即使使用AlwaysOn也无法一整行显示:
解决后的文本框内容显示: