【问题标题】:How can I change the size of a QGridLayout's widgets?如何更改 QGridLayout 小部件的大小?
【发布时间】:2021-04-20 18:53:41
【问题描述】:

取以下代码:

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_())

产生这个结果:
。但我想让左侧的 textEdit 更小,如下所示:
即使我在将其添加到布局之前(或之后)setGeometry,它也会被重置。

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

【问题讨论】:

  • 如果有布局管理器,使用setGeometry() 是没有意义的(布局管理 大小和位置)。阅读有关stretch factors 的更多信息。
  • @musicamante 如何应用拉伸?我应该将它应用到小部件还是布局?我没有注意到链接中的任何内容。
  • @Haveaniceday 最大的问题是:左侧元素的宽度应该是多少?应该是固定宽度还是应该是窗口宽度的比例?
  • @eyllanesc 从长远来看我不确定,但现在我想要固定宽度,如果可能的话

标签: python pyqt pyqt5 qgridlayout


【解决方案1】:

答案取决于你是否愿意:

  • 固定宽度:

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

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

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2014-06-02
    • 2017-01-23
    相关资源
    最近更新 更多