猿问

PyQt5 将小部件大小设置为最小值并修复

def __init__(self):

    super().__init__()

    self.order_list = [str(i) * 2 * i for i in range(20)]

    self.space = 18

    self.init_ui()


def init_ui(self):

    self.setGeometry(300, 300, 300, 300)


    self.layout = Qw.QGridLayout(self)


    self.menu = Qw.QWidget()

    self.menu.setFixedHeight(self.space * len(self.order_list) + 5)

    self.menu.items = []

    for n, i in enumerate(self.order_list):

        btn = Qw.QCheckBox(i, self.menu)

        btn.move(5, self.space * n + 5)

        btn.setFixedHeight(15)

        self.menu.items.append(btn)

    self.menu_scroll = Qw.QScrollArea()

    self.menu_scroll.setWidgetResizable(True)

    self.menu_scroll.setWidget(self.menu)

    self.layout.addWidget(self.menu_scroll, 0, 0, 1, 1)

    self.layout.setColumnStretch(0, 10)


    self.rec = Qw.QWidget()

    self.rec_box = Qw.QVBoxLayout(self.rec)

    self.rec.setLayout(self.rec_box)

    self.rec_scroll = Qw.QScrollArea()

    self.rec_scroll.setWidget(self.rec)


    self.layout.addWidget(self.rec_scroll, 0, 1, 1, 1)

    self.layout.setColumnStretch(1, 9)


    self.order_btn = Qw.QPushButton('Order')

    self.order_btn.setFixedSize(80, 30)

    self.order_btn.clicked.connect(self.get_ordered)

    self.layout.addWidget(self.order_btn, 1, 0, 1, 2, alignment=Qc.Qt.AlignCenter)

所以我有这个代码。它由带有两个 QScrollAreas 和一个按钮的网格布局组成。我需要将 self.menu 的大小设置为固定的,这样它就可以一直滚动到它不够大的时候。垂直已经这样做了,但是我如何将菜单调整为最大的小部件大小?将 WidgetResizeable 设置为 False 只会使 ScrollArea 为空。(不要看右边的区域,剩下的我会换的)


我还应该提到,需要在单击 order_btn 时添加一些小部件。这就是布局代码的工作方式,但它破坏了间距和位置。


料青山看我应如是
浏览 208回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答