如何在 PyQt5 布局中更紧密地对齐两个小部件?
Posted
技术标签:
【中文标题】如何在 PyQt5 布局中更紧密地对齐两个小部件?【英文标题】:How to align two widgets more closely in PyQt5 layouts? 【发布时间】:2021-10-12 11:50:06 【问题描述】:如何更紧密地对齐两个小部件?在我的代码中,我想更紧密地对齐 QLabel 1 和 QLabel 2(即 QLabel 2 在 QLabel 1 下方对齐,间距最小)。
import sys
from PyQt5 import QtCore,QtGui,QtWidgets
class Layout_sample(QtWidgets.QWidget):
def __init__(self):
super(). __init__()
self.setWindowTitle("Layout Sample")
self.vbox = QtWidgets.QVBoxLayout()
self.lbl1 = QtWidgets.QLabel("F3")
self.lbl2 = QtWidgets.QLabel(u'\u2550'+u'\u2550')
self.vbox.addStretch()
self.vbox.addWidget(self.lbl1)
self.vbox.addWidget(self.lbl2)
self.vbox.addStretch()
self.vbox.setSpacing(0)
self.setLayout(self.vbox)
if __name__ =="__main__":
app = QtWidgets.QApplication(sys.argv)
mainwindow = Layout_sample()
mainwindow.show()
sys.exit(app.exec_())
【问题讨论】:
【参考方案1】:我假设您想要实现的是第一个标签中的文本的双下划线。您的示例的问题是 unicode 字符 ═
(U+2550) 垂直居中,因此其上方总会有一些固定空间。 unicode box-drawing characters 不包含顶部对齐的双下划线,因此需要采用不同的方法。
一种解决方案是在标签内使用 html/css 在文本下方绘制双边框。这必须使用表格单元来完成,因为 Qt 只支持 limited subset of html/css:
underline = """<td style="
border-bottom-style: double;
border-bottom-width: 3px;
">%s</td>"""
self.lbl1 = QtWidgets.QLabel(underline % 'F3')
self.vbox.addStretch()
self.vbox.addWidget(self.lbl1)
self.vbox.addStretch()
【讨论】:
以上是关于如何在 PyQt5 布局中更紧密地对齐两个小部件?的主要内容,如果未能解决你的问题,请参考以下文章