首页 > 解决方案 > 如何在新窗口中显示小部件女巫是不使用布局的小部件

问题描述

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

这是我创建新的小部件窗口女巫显示但没有小部件的类。

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))

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

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

MineWindows 由 PyQT5 Designer 生成。

标签: pythonpyqtpyqt5window

解决方案


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

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

在你的情况下,你只需要通过父母:

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

推荐阅读