python - 按下按钮后打开一个新窗口/没有/类 PyQT5
问题描述
对于一个学校项目,我试图在按下按钮后在 PyQT5 中打开一个新窗口。我的代码还没有任何类,只有 2 个函数在 2 个文件中打开 2 个单独的窗口,但我试图将两者合并在一起。有没有办法在没有课程的情况下做到这一点,还是我需要先将 2 个窗口放在课程中?
我问是因为到目前为止我发现的所有解决方案都涉及类,但到目前为止我的代码没有任何类。我是否需要为每个窗口制作类以使其工作,或者是否有不涉及制作类的替代版本(这是我想要的目标)?
我的代码如下。
import sys
from PyQt5.QtWidgets import *
app = QApplication(sys.argv)
window = QWidget()
##window.setGeometry(50, 50, 350, 200)
##window.setWindowTitle("Fantasy F1")
def ExistingUserPressed():
print("Existing user pressed")
def NewUserPressed():
print("New user pressed")
def UserOrNot():
window.setGeometry(50, 50, 350, 200)
window.setWindowTitle("Fantasy F1")
layout = QGridLayout()
UserQuestion = QLabel("Are you an existing user or a new user?")
layout.addWidget(UserQuestion)
## creates a button for existing users
ExistingUser = QPushButton("Existing user")
ExistingUser.clicked.connect(ExistingUserPressed)
layout.addWidget(ExistingUser)
## creates a button for new users
NewUser = QPushButton("New user")
NewUser.clicked.connect(NewUserPressed)
NewUser.clicked.connect(CreateUserForm)
layout.addWidget(NewUser)
window.setLayout(layout)
window.show()
def OKPressed():
print("OK pressed")
def CancelPressed():
print("Cancel pressed")
def CreateUserForm():
window = QWidget()
window.setGeometry(50, 50, 350, 250)
window.setWindowTitle("Create a team")
layout = QFormLayout()
## creates a form (age is spinbox to make sure user can only enter numbers)
layout.addRow(QLabel("Username:"), QLineEdit())
layout.addRow(QLabel("Team name:"), QLineEdit())
layout.addRow(QLabel("First name:"), QLineEdit())
layout.addRow(QLabel("Last name:"), QLineEdit())
layout.addRow(QLabel("Password:"), QLineEdit())
layout.addRow(QLabel("Email address:"), QLineEdit())
layout.addRow(QLabel("Age:"), QSpinBox())
#layout.addWidget(QPushButton("OK"))
OKButton = QPushButton("OK")
layout.addWidget(OKButton)
OKButton.clicked.connect(OKPressed)
CancelButton = QPushButton("Cancel")
layout.addWidget(CancelButton)
CancelButton.clicked.connect(CancelPressed)
#layout.addWidget(QPushButton("Cancel"))
window.setLayout(layout)
window.show()
if __name__ == '__main__':
user = UserOrNot()
解决方案
推荐阅读
- javascript - 未处理的承诺拒绝(评估'result.offset')
- jquery - ajax成功加载超链接的html页面
- python-3.x - Odoo 13 在 mrp_production_templates.xml 中为产品添加批次时出现问题
- sql-server - 检查是否存在后用光标插入整条记录
- spring-boot - 如何自动转义百里香路径变量中的特殊字符?
- javascript - 无法 POST /api/auth/login%0A posman 错误
- amazon-web-services - Cognito 用户组可以用于无服务器应用程序中的动态组吗?
- angular - Angular,DragnDrop 问题,本地存储
- json - 在 GO 中反序列化一个非标准的 json
- javascript - 带有 useContext 的 UseState 不会触发重新渲染