加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 缩小子大小后缩小父级小部件

发布时间:2020-12-20 11:18:54 所属栏目:Python 来源:网络整理
导读:如果他们的一个孩子改变了身高,我怎么能让所有小部件缩小? 如果新的高度更大,它们会扩展,但如果更小,则不会缩小. 我尝试了updateGeometry(),但它没有改变任何东西. 这是一个例子,在子元素shran之后,父母的身高不会改变: ??? import sysfrom PyQt4.QtGui im
如果他们的一个孩子改变了身高,我怎么能让所有小部件缩小?
如果新的高度更大,它们会扩展,但如果更小,则不会缩小.

我尝试了updateGeometry(),但它没有改变任何东西.

这是一个例子,在子元素shran之后,父母的身高不会改变:
???

import sys
from PyQt4.QtGui import *

class MainWindow(QWidget):
    def __init__(self,parent=None):
        QWidget.__init__(self,parent)

        # inner widget
        self.widget = QGroupBox('inner')
        vbox_inner = QVBoxLayout(self.widget)

        button1 = QPushButton('100')
        button1.clicked.connect(lambda: self.change_height(100))
        vbox_inner.addWidget(button1)
        button2 = QPushButton('200')
        button2.clicked.connect(lambda: self.change_height(200))
        vbox_inner.addWidget(button2)

        # outer layout
        vbox = QVBoxLayout(self)
        vbox.addWidget(self.widget)

    # resizing element
    def change_height(self,height):
        self.widget.setFixedHeight(height)


app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())

有没有办法调整所有父母的小部件?

用Python回答:

widget = self.parent()
while widget:
    widget.adjustSize()
    widget = widget.parent()

解决方法

您应该在“顶层”窗口小部件(在本例中为MainWindow)上调用 adjustSize()方法.

您需要自己在窗口小部件层次结构中传播该调用,以获得比样本更复杂的布局.在C中,你可以这样做:

QWidget *w = <the widget you resized>->parentWidget();
while (w) {
  w->adjustSize();
  w = w->parentWidget();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读