使用 QTextEdit 时 Pyqt5 QGridlayout 问题

Pyqt5 QGridlayout issue when using QTextEdit

我想使用网格布局调整高度和宽度。

class MatchStepWidget(QWidget):
    def __init__(self,parent):

        super(MatchStepWidget,self).__init__(parent)
        self.initUI()

    def initUI(self):

        layout = QGridLayout(self)
        
        test = QTextEdit(self)
        bt_test = QPushButton(self)

        layout.addWidget(test,0,0,1,1)
        layout.addWidget(bt_test,1,0,1,1)
        # bt_test.hide()
        pass
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = MatchStepWidget(None)
    myapp.show()
    sys.exit(app.exec_())

我将按钮和文本编辑器的行跨度和列跨度设置为相同。 但是 Textedit 覆盖的区域比按钮多 如何使用网格布局调整 Textedit 区域?

默认的QPushButton是不会垂直拉伸的,如果要改变的话必须修改QSizePolicy。此外,如果您希望 QPushButton 和 QTextEdit 的高度相同,则必须为布局的每一行设置拉伸因子:

def initUI(self):
    test = QTextEdit()
    bt_test = QPushButton()

    layout = QGridLayout(self)
    layout.addWidget(test, 0, 0)
    layout.addWidget(bt_test, 1, 0)

    <b>sp = bt_test.sizePolicy()
    sp.setVerticalPolicy(QSizePolicy.Minimum)
    bt_test.setSizePolicy(sp)

    layout.setRowStretch(0, 1)
    layout.setRowStretch(1, 1)</b>