为了账号安全,请及时绑定邮箱和手机立即绑定

QPlainTextEdit 是 RightToLeft 但显示 LeftToRight

QPlainTextEdit 是 RightToLeft 但显示 LeftToRight

倚天杖 2022-01-11 16:43:16
我使用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))

//img1.sycdn.imooc.com//61dd434800015f8103630190.jpg

查看完整回答
反对 回复 2022-01-11
?
HUH函数

TA贡献1836条经验 获得超4个赞

不要使用QPlainText,因为它在内部使用QPlainTextDocumentLayout不完全支持 RTL(例如自动对齐 - 就像您正在寻找的那样)。您可以使用QTextEdit,或使用不同的文件布局类(比如QTextDocumentLayout在你的)QPlainText

这些Plain类存在的原因是通过删除您需要的功能来更快。


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 460 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信