我有一个来自tk的gui,我正在尝试使用pyqt复制。你可以看到here。在tk图像中,您会注意到在“前5个”区域中,客户名称用空格填充,并且发货数量与右侧对齐。
我已在pyqt中使用QtGui.QFormLayout
实现了此功能。我尝试过setFormAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignRight)
,但这仍会导致您在我的链接中看到的图片。
我做错了什么? Here是我的pyqt代码的全部内容 - 如果您有其他任何建议替代,'更好'即更多pythonic方式,请告诉我。
答案 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)