如何在QFormLayout中右对齐第二列?

时间:2016-01-22 19:09:59

标签: python qt pyqt alignment

我有一个来自tk的gui,我正在尝试使用pyqt复制。你可以看到here。在tk图像中,您会注意到在“前5个”区域中,客户名称用空格填充,并且发货数量与右侧对齐。

我已在pyqt中使用QtGui.QFormLayout实现了此功能。我尝试过setFormAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignRight),但这仍会导致您在我的链接中看到的图片。

我做错了什么? Here是我的pyqt代码的全部内容 - 如果您有其他任何建议替代,'更好'即更多pythonic方式,请告诉我。

1 个答案:

答案 0 :(得分:1)

设置您在第43行创建的各个QLabel的对齐方式:

cust = QtGui.QLabel(' - Customer - ')
qty = QtGui.QLabel('1234')
qty.setAlignment(QtCore.Qt.AlignRight)
self.topFive.append([cust, qty])
ov_custs.addRow(cust, qty)

结果是this

我还建议您使用QVBoxLayout作为主要布局,并使用QHBoxLayout来包含“Part Number”和QLineEdit小部件。这样,当您从tk布局添加其他小部件时,您不必担心网格坐标:

vbox = QtGui.QVBoxLayout()
overviewBox = QtGui.QGroupBox('Overview')

# Main window
part_num_layout = QtGui.QHBoxLayout()
part_num_layout.addWidget(QtGui.QLabel('Part Number'))
part_num_layout.addWidget(QtGui.QLineEdit(), stretch=1)
vbox.addLayout(part_num_layout)
vbox.addWidget(overviewBox)
...
self.setLayout(vbox)