gpt4 book ai didi

python - Qt 按顺序显示窗口

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:56 25 4
gpt4 key购买 nike

我正在开发一个以登录窗口启动的 Python Qt 应用程序。登录后,我想显示正常的应用程序窗口。作为测试,我尝试显示 AuthWindow(登录窗口)两次。期望的效果是登录窗口打开一次,我关闭它,然后第二个打开,依此类推。实际上发生了什么,第一个打开,我关闭它,然后程序退出。

import sys
from PyQt4 import QtGui

from AuthWindow import AuthWindow

def main():
app = QtGui.QApplication(sys.argv)
w = AuthWindow()
w.show()
w = AuthWindow()
w.show()
sys.exit(app.exec())

if __name__ == '__main__':
main()

这是 AuthWindow 的代码:

from PyQt4 import QtGui

class AuthWindow(QtGui.QDialog):
User, Admin = range(2)

def __init__(self, parent = None):
super().__init__(parent)
self.setWindowTitle('Login')
hbox = QtGui.QHBoxLayout(self)
vbox = QtGui.QVBoxLayout()

self.username = QtGui.QLineEdit()
self.password = QtGui.QLineEdit()

vbox.addWidget(QtGui.QLabel('Username'))
vbox.addWidget(self.username)
vbox.addWidget(QtGui.QLabel('Password'))
vbox.addWidget(self.password)

btn = QtGui.QPushButton('Login')
btn.clicked.connect(self.loginClicked)

hbox.addLayout(vbox)
hbox.addWidget(btn)

self.password.setEchoMode(QtGui.QLineEdit.Password)

def loginClicked(self, ev):
auth = self.checkLogin()
print(auth)

def checkLogin(self):
username = self.username.text()
password = self.password.text()
print(username)
print(password)
# login logic will go here...

最佳答案

我认为问题在于 show() 允许程序继续;您应该使用 exec_() 来暂停代码,直到窗口关闭。所以如果你输入:

def main():
app = QtGui.QApplication(sys.argv)
w = AuthWindow()
w.exec_()
w.show()
sys.exit(app.exec_())

在第一个 authwindow 关闭之前,不会创建第二个 authwindow。

关于python - Qt 按顺序显示窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16862219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com