我已经在Python中构建了一个应用程序,使用PyQt4库作为我的GUI。我的GUI绘制了一个图形和它上面的一些按钮。该图表位于frame_B
,图表上方的按钮(和led)位于frame_A
:
我在frame_A
课程中创建frame_B
(以及MainWindow
):
class CustomMainWindow(QtGui.QMainWindow):
def __init__(self):
super(CustomMainWindow, self).__init__()
# Do some initialization stuff..
''''''
def initLayout(self):
# Create frame_A and its corresponding layout
frame_A = QtGui.QFrame(self)
setCustomSize(frame_A, 380,800)
self.layout_A = QtGui.QGridLayout()
frame_A.setLayout(self.layout_A)
# Create frame_B, and so forth..
''''''
def setButtons(self):
# Create btn01..
# Create btn02..
# Create btn03..
# Create btn04..
# Create btn05..
# Create led01..
# Add all buttons to the layout of frame_A:
self.layout_A.addWidget(self.btn01, *(0,0))
self.layout_A.addWidget(self.btn02, *(0,1))
self.layout_A.addWidget(self.btn03, *(0,2))
self.layout_A.addWidget(self.btn04, *(0,3))
self.layout_A.addWidget(self.btn05, *(0,4))
self.layout_A.addWidget(self.led01, *(0,5))
''''''
''''''
结果非常令人满意,如上图所示。当我放大窗口时(通过简单的单击并用鼠标拖动),frame_A
和frame_B
也会放大。那很好。我不会想要任何其他方式。
但令我困扰的是frame_A
中的按钮均匀分布以填充所有新空间。我更喜欢这样的行为:
任何人都有一个聪明的想法来实现这个目标吗?
答案 0 :(得分:2)
在最后一个按钮
之后添加self.layout_A.addStretch()
答案 1 :(得分:1)
如果您只想横向添加小部件,我建议您使用QHBoxLayout
代替QGridLayout
。有了它,你可以使用layout_A.setAlignment(QtCore.Qt.AlignLeft)
。不确定它是否也适用于Gridlayout。