PyQt 将 QWidget 的方向从右向左更改

Cod*_*ngX 5 python pyqt qwidget pyqt4 pyqt5

我想使用 SetLyouatDirection 从右到左更改小部件的方向,但不起作用这是我的结果:

在此输入图像描述

这是我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

eyl*_*esc 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_())
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述