我使用QPlainTextEdit并设置了一个视图setLayoutDirection(QtCore.Qt.RightToLeft)。的输出self.plaintxt.isRightToLeft()为 1,但在纯文本视图中,波斯文和英文文本从左侧显示。我的代码中发生了什么?代码:import sys, refrom PyQt5 import QtCorefrom PyQt5.QtWidgets import QApplication, QLabel, QLineEdit, QMainWindow, QPushButton, QFileSystemModel, QTreeView, \ QFileDialog, QComboBox, QPlainTextEditfrom PyQt5.QtCore import pyqtSlotclass App(QMainWindow): def __init__(self): super(App, self).__init__() self.title = 'by PyQt5 and python 3.7' self.left = 10 self.top = 10 self.width = 1000 self.height = 500 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.btn_browse = QPushButton('Browse', self) self.btn_browse.move(50, 20) self.btn_browse.clicked.connect(self.on_click) self.textbox = QLineEdit(self) self.textbox.move(170, 20) self.textbox.resize(280, 40) self.textbox.setAlignment(QtCore.Qt.AlignRight) # It is in right. self.page_view = QPlainTextEdit(self) self.page_view.move(20, 100) self.page_view.resize(800, 400) self.page_view.setLayoutDirection(QtCore.Qt.RightToLeft) # It is not in right. self.show()if __name__ == '__main__': app = QApplication(sys.argv) ex = App() sys.exit(app.exec_())
2 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
QWidget.setLayoutDirection 不再影响 QTextEdit、QLineEdit 和基于它们的小部件的文本布局方向(Qt.LeftToRight 或 Qt.RightToLeft)。
要以编程方式强制文本方向,您可以使用具有不同 textDirection 属性的新 QTextOption 更改与该小部件关联的 QTextDocument 的 defaultTextOption。
QTextDocument *QPlainTextEdit::document() 常量
返回指向基础文档的指针。
无效 QTextDocument::setDefaultTextOption(const QTextOption &option)
将默认文本选项设置为选项。
self.page_view.document().setDefaultTextOption(QTextOption(Qt.AlignRight))
HUH函数
TA贡献1836条经验 获得超4个赞
不要使用QPlainText
,因为它在内部使用QPlainTextDocumentLayout
不完全支持 RTL(例如自动对齐 - 就像您正在寻找的那样)。您可以使用QTextEdit
,或使用不同的文件布局类(比如QTextDocumentLayout
在你的)QPlainText
。
这些Plain
类存在的原因是通过删除您需要的功能来更快。
添加回答
举报
0/150
提交
取消