Qt QFormLayout将标签向左对齐,值向右对齐

时间:2019-04-07 19:48:41

标签: python qt pyqt

我有以下QFormLayout,其中包含一个短值行和一个长值行

plt.subplots_adjust(bottom=0.15)
plt.show()

我得到的是:

layout = QFormLayout()
layout.setLabelAlignment(Qt.AlignLeft)
layout.setFormAlignment(Qt.AlignLeft)

layout.addRow(QLabel('Label short'), QLabel('2'))
layout.addRow(QLabel('Label long'), QLabel('1234567890'))

我想要的是:

Label short    2
Label long     1234567890

我将第一列称为标签列,第二列称为值列。

  • 使用Label short 2 Label long 1234567890 ,我可以将整个表单向左或向右移动,但是值列的对齐方式保持不变
  • 使用setFormAlignment(),我可以更改标签列,但不能更改值列
  • 使用setLabelAlignment()似乎没有任何作用

第二列上是否有用于控制对齐方式的端点?

2 个答案:

答案 0 :(得分:0)

使用QLabel,您应该能够使用AlignRight将水平文本对齐方式设置为右侧

类似的东西(使用C ++,但在Python中具有相同的选项)

label->setAlignment(Qt::AlignBottom | Qt::AlignRight);

答案 1 :(得分:0)

尝试一下:

from PyQt5.QtCore    import *
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)

        layout = QFormLayout(centralWidget)
        layout.setLabelAlignment(Qt.AlignLeft)
        layout.setFormAlignment(Qt.AlignLeft)

        layout.addRow(QLabel('Label short'), QLabel('2',          alignment=Qt.AlignRight))
        layout.addRow(QLabel('Label long'),  QLabel('1234567890', alignment=Qt.AlignRight))

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

enter image description here