在PyQt中扩展QWidgets

时间:2016-05-17 09:15:47

标签: python qt python-3.x pyqt pyqt4

我已经在Python中构建了一个应用程序,使用PyQt4库作为我的GUI。我的GUI绘制了一个图形和它上面的一些按钮。该图表位于frame_B,图表上方的按钮(和led)位于frame_A

enter image description here

我在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_Aframe_B也会放大。那很好。我不会想要任何其他方式。

但令我困扰的是frame_A中的按钮均匀分布以填充所有新空间。我更喜欢这样的行为: enter image description here

任何人都有一个聪明的想法来实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

在最后一个按钮

之后添加self.layout_A.addStretch()

答案 1 :(得分:1)

如果您只想横向添加小部件,我建议您使用QHBoxLayout代替QGridLayout。有了它,你可以使用layout_A.setAlignment(QtCore.Qt.AlignLeft)。不确定它是否也适用于Gridlayout。