<p>下面给出了一个更完整的示例,说明如何编写登录对话框:</p>
<ul>
<li><a href="https://stackoverflow.com/a/11812578/984421">Login dialog PyQt</a></li>
</ul>
<hr/>
<p>但是,在您自己的示例中,您应该注意,没有必要处理close事件,因为“X”按钮将自动
将对话框的结果设置为<a href="https://doc.qt.io/qt-5/qdialog.html#DialogCode-enum" rel="nofollow noreferrer">^{<cd1>}</a>。相反,您只需要在单击submit按钮时将结果设置为<code>Accepted</code>。然后可以检查<code>exec_()</code>的返回值以查看用户做了什么。你知道吗</p>
<p>以下是您的脚本的重写:</p>
<pre><code>import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Login(QDialog):
def __init__(self,parent=None):
super(Login, self).__init__(parent)
self.grid = QGridLayout(self)
self.setGeometry(650, 350, 400, 150)
self.setFixedSize(400, 150)
self.UserLabels = QLabel(self)
self.UserLabels.setText('Login Number:')
self.grid.addWidget(self.UserLabels, 0, 0, 1, 1)
self.textName = QLineEdit(self)
self.grid.addWidget(self.textName, 0, 1, 1, 2)
self.buttonLogin = QPushButton('Submit', self)
self.buttonLogin.clicked.connect(self.accept)
self.grid.addWidget(self.buttonLogin, 2, 0, 1, 3)
def password(self):
return self.textName.text()
def handleLogin():
result = None
login = Login()
while result is None:
if login.exec_() == QDialog.Accepted:
password = login.password()
if password == '6':
result = True
else:
result = False
return result
if __name__ == '__main__':
app = QApplication(sys.argv)
if handleLogin():
print('logged in')
else:
print('cancelled')
</code></pre>