【问题标题】:PyQt5 - How to dynamically add widgets to window without layoutPyQt5 - 如何在没有布局的情况下将小部件动态添加到窗口
【发布时间】:2021-05-25 05:14:34
【问题描述】:

我一直在尝试解决这个问题,我不想使用布局的原因是因为小部件在调整大小时会随窗口缩放,我希望它们保持原样,我已经做到了拖放小部件,但由于它们处于布局中,所以它搞砸了,请有人帮我解决这个问题。

我希望能够添加一个标签小部件,我想在我可以按下按钮的地方拥有它,它会在我的窗口中创建一个新的标签小部件,我已经完成了这部分但我想成为能够在没有布局的情况下添加小部件。

【问题讨论】:

  • “我已经完成了这部分”,然后向我们提供minimal, reproducible example 您目前所获得的信息,以便我们了解如何为您提供帮助。
  • 虽然问题可能很“简单”,但我们无法总能猜出您面临的问题。如果我们问一个问题,可能有一个很好的理由,因为“我认为我在问什么很清楚”通常是完全相反的。您可能很幸运,因为 eyllanesc 的答案得到了您所需要的,但您应该考虑这一点以供将来参考。我们每天都会收到数百个问题,我们无法知道您的理解程度如何,我们可能会给您一个不符合您需求或您不理解的答案;我们不能总是“在黑暗中拍摄”。如果我们要求您提供 MRE,有充分的理由。
  • @musicamante 很抱歉我以这种方式回复,我误读了评论,在注意到我的错误后我删除了我的评论,我现在明白了,我一定会考虑到这一点下次我去问问题时,我真的很感激有人能够帮助我,因为我花了整整两天时间试图自己解决这个问题,再次抱歉,我应该早点注意到我的错误。

标签: python pyqt pyqt5


【解决方案1】:

您只需将属于窗口(或窗口本身)的另一个小部件设置为父窗口,并使用 show 方法使其可见:

import random
import sys

from PyQt5 import QtCore, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        button = QtWidgets.QPushButton("Add", self)
        button.clicked.connect(self.handle_clicked)

        self.resize(640, 480)

    def handle_clicked(self):
        pos = QtCore.QPoint(*random.sample(range(400), 2))
        label = QtWidgets.QLabel(self)
        label.move(pos)
        label.setText("{}-{}".format(pos.x(), pos.y()))
        label.show()


def main():
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()

【讨论】:

  • @kyarnell04 不知道,没看过你的代码
  • @kyarnell04 你需要做的就是在创建标签时将 self 作为父参数传递
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 2020-10-16
  • 2012-04-02
  • 2019-01-30
  • 2012-06-03
相关资源
最近更新 更多