PyQt如何将QWidget的方向从右改为左

5
我想通过使用SetLayoutDirection将小部件的方向从右改为左,但不起作用。这是我的结果:

enter image description here

这是我的代码:
for item in listConcrdance:
        c+=1
        widgitItem = QtGui.QListWidgetItem()
        widget = QtGui.QWidget()
        widgetText=QtGui.QLabel(str(c)+". "+item[1]+" ("+self.process.convertNumberToNameOFSorat(item[0][1])+":"+item[0][2]+")")
        widgetText.setLayoutDirection(QtCore.Qt.RightToLeft)
        widgetLayout = QtGui.QHBoxLayout()
        widgetLayout.addWidget(widgetText)
        widgetLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize)
        widget.setLayout(widgetLayout)
        self.listWidgetQuran.addItem(widgitItem)
        widgitItem.setSizeHint(widget.sizeHint())
        self.listWidgetQuran.setItemWidget(widgitItem, widget)

2
尝试在您的widgetLayout上应用setLayoutDirection(QtCore.Qt.RightToLeft),如widgetLayout.setLayoutDirection(QtCore.Qt.RightToLeft) - syedelec
属性错误:'QHBoxLayout'对象没有属性'setLayoutDirection'。 - CodingX
1
抱歉,我的意思是使用widgetLayout.setDirection(QtGui.QBoxLayout.RightToLeft)而不是setLayoutDirection文档 - syedelec
1个回答

4
使用[your_label].setAlignment(QtCore.Qt.AlignRight)来实现右对齐:
from PyQt4 import QtCore
from PyQt4 import QtGui


class Widget(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent=parent)
        self.verticalLayout = QtGui.QVBoxLayout(self)
        self.listWidget = QtGui.QListWidget(self)
        self.verticalLayout.addWidget(self.listWidget)
        for item in range(10):
            widgitItem = QtGui.QListWidgetItem(self.listWidget)
            widget = QtGui.QWidget()
            widgetText = QtGui.QLabel(str(item))
            if item % 2 == 0:
                widgetText.setAlignment(QtCore.Qt.AlignRight)
            else:
                widgetText.setAlignment(QtCore.Qt.AlignLeft)
            widgetLayout = QtGui.QHBoxLayout()
            widgetLayout.addWidget(widgetText)
            widget.setLayout(widgetLayout)
            widgitItem.setSizeHint(widget.sizeHint())
            self.listWidget.setItemWidget(widgitItem, widget)

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

输出:

在这里输入图片描述


(提示:上述内容主要是关于输出及图片链接的说明。)

1
这不是完全正确的答案。这里的文本是阿拉伯语(一种从右到左的语言)。改变对齐方式并不等于改变方向。文本方向也应该改为从右到左。使用当前的答案,标点符号、括号等都会被颠倒。 - user206904

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接