PySide2 / PyQt5 中的强制 RtL
Forced RtL in PySide2 / PyQt5
我有一个带有未知文本的 QLabel,无论是哪种语言,它都必须是从右到左的。所以我写了这段代码:
def add_label(self):
text = self.text_input.text() # self.text_input is a QLineEdit
widget = QLabel(text)
widget.setAlignment(Qt.AlignRight)
widget.setStyleSheet("color: #000000")
self.layout.addWidget(widget) # self.layout is a QVBoxLayout
# I can't setAlignment for self.layout because there is some other QLabels in there that have a LtR alignment.
这里的问题是当我在 self.text_input
和 运行 中编写波斯语文本时 add_label
函数(通过按下按钮)它会自动将对齐方式更改为 RtL 和当我调用 widget.setAlignment(Qt.AlignRight)
时,它会变回 LtR。但是不管是什么语言我都希望是RtL
如何解决这个问题?
编辑:我添加了一张图片来描述问题
解决方案是将对齐标志与 Qt.AlignAbsolute
结合使用,这样无论布局方向如何,文本都将始终向右对齐。
widget.setAlignment(Qt.AlignRight | Qt.AlignAbsolute)
我有一个带有未知文本的 QLabel,无论是哪种语言,它都必须是从右到左的。所以我写了这段代码:
def add_label(self):
text = self.text_input.text() # self.text_input is a QLineEdit
widget = QLabel(text)
widget.setAlignment(Qt.AlignRight)
widget.setStyleSheet("color: #000000")
self.layout.addWidget(widget) # self.layout is a QVBoxLayout
# I can't setAlignment for self.layout because there is some other QLabels in there that have a LtR alignment.
这里的问题是当我在 self.text_input
和 运行 中编写波斯语文本时 add_label
函数(通过按下按钮)它会自动将对齐方式更改为 RtL 和当我调用 widget.setAlignment(Qt.AlignRight)
时,它会变回 LtR。但是不管是什么语言我都希望是RtL
如何解决这个问题?
编辑:我添加了一张图片来描述问题
解决方案是将对齐标志与 Qt.AlignAbsolute
结合使用,这样无论布局方向如何,文本都将始终向右对齐。
widget.setAlignment(Qt.AlignRight | Qt.AlignAbsolute)