pyqt QPushButton按钮如何在QGridLayout单元格居中显示
时间: 2024-09-08 17:02:09 浏览: 53
在PyQt中,要在`QGridLayout`布局中让`QPushButton`按钮居中显示,你需要在添加按钮到网格时,结合`addWidget()`方法并使用`setGeometry()`方法来设置按钮的位置。这里是一个例子:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Button Grid Example')
layout = QGridLayout()
button = QPushButton('Click me!')
button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) # 防止按钮大小随文字内容变化而变大
button.clicked.connect(self.button_clicked)
row = column = 0
layout.addWidget(button, row, column, 1, 1) # 设置单行单列占满,1为宽度高度
# 将按钮放在gridLayout的中间
self.setLayout(layout)
self.gridPosition = layout.getItemPosition(button) # 获取按钮当前位置
row, column = self.gridPosition[0], self.gridPosition[1]
button.setGeometry(column * cellWidth + (cellWidth - button.width()) / 2,
row * cellHeight + (cellHeight - button.height()) / 2,
button.width(), button.height())
self.show()
def button_clicked(self):
print('Button clicked')
if __name__ == '__main__':
app = QApplication([])
myWindow = MyWindow()
app.exec_()
```
在这个例子中,我们首先创建了一个`QPushButton`,然后将其添加到`QGridLayout`中。为了使其在网格中居中,我们在初始化布局时记录了按钮的位置,然后使用这个位置计算出新的几何坐标并应用到`setGeometry()`方法上。
阅读全文