PyQT问题与按钮和QGridLayout

时间:2014-04-04 18:21:38

标签: python qt pyqt pyqt4

我试图创建一个简单的GUI,其中包含3个垂直分割的部分,其中前2个是QLabel,下部是按钮网格。我的问题是,尽管按钮在网格中水平展开,但它们并没有垂直扩展以填充整个单元格。

这是我的设置:

    app = QtGui.QApplication([])

    window = QtGui.QMainWindow()
    window.setWindowFlags(QtCore.Qt.FramelessWindowHint)
    window.setFixedSize(self.WINDOW_WIDTH,self.WINDOW_HEIGHT)

    centralWidget = QtGui.QWidget(window)
    window.setCentralWidget(centralWidget)


    LCD = QtGui.QLabel()
    LCD.setFixedSize(self.WINDOW_WIDTH, int(.32*self.WINDOW_HEIGHT))
    LCD.setAutoFillBackground(True)
    LCD.setAlignment(QtCore.Qt.AlignCenter)
    LCD.setText("LCD")

    palette = QtGui.QPalette()
    palette.setColor(QtGui.QPalette.Background,QtCore.Qt.red)
    palette.setColor(QtGui.QPalette.Foreground,QtCore.Qt.white)
    LCD.setPalette(palette)

    ticker= QtGui.QLabel()
    ticker.setFixedSize(self.WINDOW_WIDTH, int(.04*self.WINDOW_HEIGHT))
    ticker.setText("Ticker")
    ticker.setAlignment(QtCore.Qt.AlignCenter)

    buttonWidget = QtGui.QWidget()
    buttonWidget.setFixedSize(self.WINDOW_WIDTH, int(.64*self.WINDOW_HEIGHT))


    vbox = QtGui.QVBoxLayout(centralWidget)
    vbox.setContentsMargins(0,0,0,0)
    vbox.setSpacing(0)

    vbox.addWidget(LCD)
    vbox.addWidget(ticker)
    vbox.addWidget(buttonWidget)

    buttonGridbox = QtGui.QGridLayout(buttonWidget)
    buttonWidget.setLayout(buttonGridbox)
    for i in range(0,2):
        for j in range(0,2): 
            buttonGridbox.addWidget(QtGui.QPushButton("button "+ str(i)),i,j)



    centralWidget.setLayout(vbox)

    window.show()
    sys.exit(app.exec_())

这是我的输出(我已经用QLabel和QGridLayout限制了矩形以显示其区域):

result

1 个答案:

答案 0 :(得分:1)

您必须在其上设置 setSizePolicy 才能展开,例如

THE_BUTTON_OBJECT.setSizePolicy(QtGui.QSizePolicy.MinimumExpanding,QtGui.QSizePolicy.Preferred)