Размер вопроса наложения на Qwidget - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь создать оверлей на виджете. После добавления наложения он занимает все пространство в виджете. Как я могу сделать наложение, чтобы взять его оригинальный размер? Исходный размер означает, что когда я запускаю оверлей как отдельный скрипт, он имеет небольшой размер.

class Legends(QWidget):
  def __init__(self):
    super().__init__()
    self.layout = QGridLayout()
    self.setLayout(self.layout)

  def addLegend(self,colorbagNames):
    print("yes",colorbagNames)
    for i in range(self.layout.rowCount()):
        for x in range(self.layout.columnCount()):
            item = self.layout.itemAtPosition(i, x)
            if item is not None:
                widget = item.widget()
                self.layout.removeWidget(widget)
                widget.setParent(None)

    x= 0
    for color, bagName in colorbagNames.items():
        labelColor = QLabel()
        labelColor.setStyleSheet("QLabel { background-color :  red }")
        self.layout.addWidget(labelColor, x, 0)
        labelText = QLabel()
        labelText.setMargin(0)
        labelText.setText(bagName)
        labelText.setStyleSheet("QLabel { background-color :  grey }")
        self.layout.addWidget(labelText, x, 1)
        x = x+1


class test(QWidget):
  def __init__(self):
    super().__init__()


    self.lay=  QVBoxLayout()
    self.lay.setSpacing(0)
    self.btn = QPushButton("yes")
    self.lay.addWidget(QPushButton("yes"))
    self.lay.addLayout(QHBoxLayout())
    self.setLayout(self.lay)


    self.legend = Legends()
    self.legend.setParent(self)
    self.legend.addLegend({'red': 'asdf'})
    self.legend.show()


if __name__ == '__main__':
   app = QApplication(sys.argv)
   window = test()
   window.show()
   status = app.exec_()
   sys.exit(status)
...