【发布时间】:2014-04-04 18:21:37
【问题描述】:
我正在尝试创建一个简单的 GUI,它由 3 个垂直分割的部分组成,顶部 2 个是 QLabels,底部是一个按钮网格。我的问题是,虽然按钮在网格中水平扩展,但它们并没有垂直扩展以填充整个单元格。
这是我的设置:
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_())
这是我的输出(我已经用矩形限制了 QLabels 和 QGridLayout 以显示它们的区域):
【问题讨论】: