PyQt从右到左改变QWidget的方向

时间:2016-12-13 15:03:11

标签: python pyqt pyqt4 pyqt5 qwidget

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

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)

1 个答案:

答案 0 :(得分:3)

使用[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_())

输出:

enter image description here

相关问题