如何在 PyQt5 布局中更紧密地对齐两个小部件?
How to align two widgets more closely in PyQt5 layouts?
如何更紧密地对齐两个小部件?在我的代码中,我想更紧密地对齐 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_())
我假设您想要实现的是第一个标签中文本的双下划线。你的例子的问题是 unicode 字符 ═
(U+2550) 是垂直居中的,所以它上面总会有一些固定的 space 。 unicode box-drawing characters 不包含顶部对齐的双下划线,因此需要采用不同的方法。
一种解决方案是在标签内使用 html/css 在文本下方绘制双边框。这必须使用 table-cell 来完成,因为 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()
如何更紧密地对齐两个小部件?在我的代码中,我想更紧密地对齐 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_())
我假设您想要实现的是第一个标签中文本的双下划线。你的例子的问题是 unicode 字符 ═
(U+2550) 是垂直居中的,所以它上面总会有一些固定的 space 。 unicode box-drawing characters 不包含顶部对齐的双下划线,因此需要采用不同的方法。
一种解决方案是在标签内使用 html/css 在文本下方绘制双边框。这必须使用 table-cell 来完成,因为 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()