我试图创建一个简单的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限制了矩形以显示其区域):
答案 0 :(得分:1)
您必须在其上设置 setSizePolicy 才能展开,例如
THE_BUTTON_OBJECT.setSizePolicy(QtGui.QSizePolicy.MinimumExpanding,QtGui.QSizePolicy.Preferred)