如何更改 QGridLayout 小部件的大小?

时间:2021-04-20 18:53:41

标签: python pyqt5

获取以下代码:

from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        win_w, win_h = 854, 735
        self.setGeometry((1920 - win_w) // 2, (1080 - win_h) // 2, win_w, win_h)
        self.setWindowTitle('Test')
        self.setFont(QtGui.QFont('Times', 12))
        self.central_widget()

    def central_widget(self):
        widget = QtWidgets.QWidget()
        
        grid = QtWidgets.QGridLayout()
        
        text_edit1 = QtWidgets.QTextEdit()
        text_edit2 = QtWidgets.QTextEdit()
        grid.addWidget(text_edit1, 0,0)
        grid.addWidget(text_edit2, 0,1)

        widget.setLayout(grid)
        self.setCentralWidget(widget)
        
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    sys.exit(app.exec_())

产生这样的结果:
result。但我想让左边的 textEdit 更小,像这样:
this 即使我在将它添加到布局之前(或之后)setGeometry,它也会被重置。

有没有办法在将小部件添加到布局后更改其几何形状?

1 个答案:

答案 0 :(得分:2)

答案取决于您是否愿意:

  • 固定宽度:

    text_edit1.setFixedWidth(100)
    
  • 使其成为容器宽度的比例:

    grid.setColumnStretch(0, 2) 
    grid.setColumnStretch(1, 3)