对于初次做GUI程序的人来说,确实登陆窗口程序会造成困惑,以前做Delphi时也有人问过我,好不容易人家才理解清楚,PyQt也是一样的。
一般有两种处理方式:
第一种:在打开主窗体前打开登陆对话框,如果登陆成功,再创建主窗体并打开;
第二种:在创建主窗体后,在显示主窗体前打开登陆对话框,如果登陆成功,显示主窗体,如果失败,不显示主窗体,并退出程序。
我推荐第一种方式,逻辑清晰,并且如果登陆不成功,那么不需要创建主窗体。
先放开登陆对话框不管,最简单的来理解,那么可以我们可以把登陆这个行为理解为一个方法,如果这个方法成功,那么就创建并显示主窗体。说白了和确认对话框一样的 ,确认对话框并不需要你来处理如何创建并打开会对话框,你只要调用这个方法即可,系统会帮你打开对话框。
那么来看代码:
from PyQt4 import QtGui, QtCore
def login():
return True
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
if login():
win = QtGui.QMainWindow()
win.show()
sys.exit(app.exec_())
这段代码应该很好理解,这里定义了这个login方法,你可以试着把返回值设成False,这样主窗体就不会显示了,说明可以达到你的要求了。这里把复杂性都隐 藏到login方法里了,把打开对话框的代码就写在这个方法里面。
# 创建一个Login对话框:
class LoginDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.user = QtGui.QLineEdit(self)
self.user.move(10, 20)
self.user.setText('admin')
self.pwd = QtGui.QLineEdit(self)
self.pwd.move(10, 60)
self.pwd.setText('admin')
self.pwd.setEchoMode(QtGui.QLineEdit.Password)
loginBtn = QtGui.QPushButton('Login', self)
loginBtn.move(100, 90)
loginBtn.clicked.connect(self.login) # 绑定方法判断用户名和密码
def login(self):
if unicode(self.user.text()) == u'admin' and
unicode(self.pwd.text()) == u'admin':
# 如果用户名和密码正确,关闭对话框,accept()关闭后,如果增加一个取消按钮调用reject()
self.accept()
else:
QtGui.QMessageBox.critical(self, 'Error', 'User name or
password error')
# login方法更改如下:
def login():
dialog = LoginDialog()
if dialog.exec_():
return True
return False
# 当然如果你嫌login方法这样写啰嗦,那么可以直接这样写:
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
dialog = LoginDialog()
if dialog.exec_():
win = QtGui.QMainWindow()
win.show()
sys.exit(app.exec_())
完整代码:
- from PyQt4 import QtGui
- class LoginDialog(QtGui.QDialog):
- def __init__(self, parent=None):
- QtGui.QDialog.__init__(self, parent)
- self.setWindowTitle('login')
- self.user = QtGui.QLineEdit(self)
- self.user.move(10, 20)
- self.user.setText('admin')
- self.pwd = QtGui.QLineEdit(self)
- self.pwd.move(10, 60)
- self.pwd.setText('admin')
- self.pwd.setEchoMode(QtGui.QLineEdit.Password)
- self.loginBtn = QtGui.QPushButton('Login', self)
- self.loginBtn.move(100, 90)
- self.loginBtn.clicked.connect(self.login) # 绑定方法判断用户名和密码
- def login(self):
- if self.user.text() == 'admin' and self.pwd.text() == 'admin':
- # 如果用户名和密码正确,关闭对话框,accept()关闭后,如果增加一个取消按钮调用reject()
- self.accept()
- else:
- QtGui.QMessageBox.critical(self, 'Error', 'User name or password error')
- if __name__ == '__main__':
- import sys
- app = QtGui.QApplication(sys.argv)
- dialog = LoginDialog()
- if dialog.exec_():
- win = QtGui.QMainWindow()
- win.setWindowTitle('MainWindow')
- win.show()
- sys.exit(app.exec_())
相关推荐
使用python中pyqt6写的登陆界面 包含了最基本的布局、控件使用等
主要为大家详细介绍了pyqt5利用pyqtDesigner实现登录界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Python-PYQT5 制作一个登陆界面 代码用到的图片代码用到的图片
使用python+PYQT5+pycharm2018开发超市收银系统 这个是登陆跳转代码 GUI代码和罗技代码相互独立,便于后期调整GUI界面布局 使用MYSQL进行user验证 验证成功后跳转到主界面 原则上也可以用在其他的应用上作为登陆跳转...
用pyqt编写的用于本地通讯的登录及注册界面: 客服端登录页面实现功能: 1、检查是否存在已注册用户数据,如无用户数据,提醒注册。 2、登录时检查用户ID及密码,提示错误信息:用户不存在,密码错误。 3、提供记住...
使用Qtdesigner设计ui界面,实行界面分离,分别设计两个界面,一个是登录的界面,一个是主界面 然后新建一个Python文件,在文件中分别将这两个界面UI引入,分别创建两个类,一个是实现登录显示的类,另一个是实现主...
包含:音乐界面客户端,管理系统客户端,CAD的QT客户端,虚拟币交易所监控客户端,数据分析的客户端,流程图客户端,自动化测试用例编辑器,基于pyside架构的适合自定义开发的客户端,登陆界面客户端,游戏平台...
这是一个基于YOLOv5的道路标志识别系统,使用了MySQL数据库,PyQt5进行界面设计,PyTorch深度学习框架和TensorRT进行加速,同时包含了CSS样式。系统由五个主要模块组成:系统登录模块负责用户登陆;初始化参数模块...
python + pyqt做的 telnet登陆升级程序,能够批量升级linux设备,为了获取是否挂载成功,自己修改了点telnetlib,ui界面是用qt做的,主要是练习使用pyqt做了个小工具
pyqt5有input界面,按钮,表格,连接数据库登陆,查找显示数据到表格中
PYSIDE,pyqt设计登录注册界面,可跳转,使用python和pycharm开发。可连接数据库使用,例如mysql等。
这是登录界面背景图
使用pyqt开发的界面登陆,验证账户为admin,密码为123456
以上这篇pyqt5 键盘监听按下enter 就登陆的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:在pyqt5中QLineEdit里面的内容回车发送的实例
登陆界面 ;" /> 输入用户名和密码,可以进行注册或登录操作,注册则保存到user.db数据库中,登录则查询数据库中是否有匹配的username和password 主界面 增加条目: 插入数据条目子界面 删除条目 清空所有数据 ...
本工程中包含博客中讲到的psd文件,jpg文件,ui文件和py文件,希望能有所帮助
软件功能:软件密码登陆跳转主界面,使用pyqt5开发,qss使用一种暗黑风格渲染
Python数据库系统课程大作业:PyQt5+MySQL的ATM系统项目源码+数据库文件(高分项目).zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。项目功能基本参照了老师...
这是一个python文件,使用的是python3.2和PyQt4的开发环境,python3.2中有telnetlib模块,这个模块里有相应的登陆和读取远程主机端shell命令行返回数据的函数,这个程序是一个完整的登陆和读取相应数据到界面文本...
Android源码方便学习,代码是最好的老师。