如何在新 window 中显示小部件 是不使用布局的小部件

How to show widgets in new window witch is widget without using layouts

我没有找到任何如何在新小部件中显示 qlabel qpushbutton 和 qtextedit 等小部件的方法 window.Here 是我的代码:

这是 class 我创建新小部件的地方 window 显示但没有小部件。

class PasswordForm(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Password")
        self.setFixedWidth(400)
        self.setFixedHeight(300)
        self.label = QLabel("Enter Admin Password:")
        self.label.setGeometry(QtCore.QRect(80, 20, 211, 31))
        self.label.setMinimumSize(QtCore.QSize(0, 31))
        self.label.setObjectName("label")
        self.admin_pass_input = QLineEdit()
        self.admin_pass_input.setGeometry(QtCore.QRect(80, 50, 161, 25))
        self.admin_pass_input.setEchoMode(QtWidgets.QLineEdit.Password)
        self.admin_pass_input.setObjectName("admin_pass_input")
        self.pushButton = QPushButton("OK")
        self.pushButton.setGeometry(QtCore.QRect(120, 80, 89, 25))

这是我调用新 window 来显示的函数:

 def clicked(self, action):
    self.p_form = PasswordForm()
    self.p_form.show()

MineWindows 由 PyQT5 Designer 生成。

Qt 的基本规则:一个 QWidget(QLineEdit、QPushButton 等)如果它是这个 QWidget 的子元素或属于 QWidget 一部分的 QWidget 的子元素,那么它将成为另一个 QWidget 的一部分。

所以布局的任务不仅是管理QWidgets的几何形状,还要建立作为管理QWidget所在位置的QWidgets的父级。

在你的情况下,你只需要传递父级:

self.label = QLabel("Enter Admin Password:", self)
self.admin_pass_input = QLineEdit(self)
self.pushButton = QPushButton("OK", self)