Python PyQt 中网格小部件定位
这是我的代码:
#class...
def setupLayout(self):
self.resize(1000, 600)
label1 = QtGui.QLabel(u'<font color=green><b><i>Полученные сообщения:</i></b></font>')
label2 = QtGui.QLabel(u'<font color=green><b><i>Описание сообщений:</i></b></font>')
self.mainList = QtGui.QListWidget()
self.descList = QtGui.QListWidget()
grid = QtGui.QGridLayout()
grid.setSpacing(1)
grid.addWidget(label1, 1, 1)
grid.addWidget(label2, 1, 2)
grid.addWidget(self.mainList, 2, 1, 5, 1)
grid.addWidget(self.descList, 2, 2, 5, 1)
#other definitions....
我想缩小标签和窗口标题面板之间的距离:

所以如果我用这段代码,距离是合适的,但列表框只显示一行:
grid.addWidget(self.mainList, 2, 1, 1, 1)
grid.addWidget(self.descList, 2, 2, 1, 1)
我该如何增加一点小距离呢?
1 个回答
1
我通常会使用 QGridLayout
来处理内容比较一致的情况。不过对于你的需求,结合使用 QHBoxLayout
和 QVBoxLayout
会更合适。
left = QtGui.QVBoxLayout()
# This makes the label take as little space as possible
# since QLabel's sizeHint is Minimum.
left.addWidget(label1, 0)
left.addWidget(self.mainList, 1)
right = QtGui.QVBoxLayout()
right.addWidget(label2, 0)
right.addWidget(self.descList, 1)
main = QtGui.QHBoxLayout()
main.addLayout(left, 1) # Both sides take the same amount of space.
main.addLayout(right, 1)