PyQT中按钮和QGridLayout的问题
我正在尝试创建一个简单的图形用户界面(GUI),这个界面分成三个垂直的部分,最上面的两个部分是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,以便显示它们的区域):
1 个回答
1
你需要给它们设置 setSizePolicy,这样它们才能扩展,比如:
THE_BUTTON_OBJECT.setSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred)