PyQt5_QLineEdIt_简版用户登录系统
作者:互联网
简版用户登录系统——QLineEdit单行文本框编辑器
- 与界面设计无关的业务逻辑抽离
- 占位文本的设置
- 一次性清空文本内容
- 添加自定义行为:密码明文密文切换
- 文本自动补全联想
- 输入文本的长度限制,并且设置只读属性
- 登录判断
######################################将 输入的内容判断,这段与界面设计无关的业务逻辑抽离到类外界
class CHECK_STATE:
NAME_ERROR = 1
PASSWORD_ERROR = 2
SUCCESS = 3
def judge_(self, name, password):
if name != 'libai':
return self.NAME_ERROR
if password != '89757':
return self.PASSWORD_ERROR
return self.SUCCESS
check_state = CHECK_STATE()
#############################将 输入的内容判断,这段与界面设计无关的业务逻辑抽离到类外界
from PyQt5.Qt import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('用户登陆界面')
self.resize(500, 500)
self.creat_gui()
def creat_gui(self):
self.le_w = 280
self.le_h = 45
self.btn_w = 220
self.btn_h = 55
self.label_w = 250
self.label_h = 40
self.le_x = (self.width() - self.le_w) / 2
self.btn_x = (self.width() - self.btn_w) / 2
self.label_x = (self.width() - self.label_w) / 2
self.le_name_y = self.height() / 5
self.le_name = QLineEdit(self)
self.le_name.setStyleSheet('font-size:25px')
self.le_name.move(self.le_x, self.le_name_y)
self.le_name.setEchoMode(QLineEdit.Normal)
self.le_name.resize(self.le_w, self.le_h)
self.le_pasword = QLineEdit(self)
self.le_pasword.setStyleSheet('font-size:25px')
self.le_pasword.move(self.le_x, self.le_name_y * 2)
self.le_pasword.setEchoMode(QLineEdit.Password)
self.le_pasword.resize(self.le_w, self.le_h)
self.btn = QPushButton(self)
self.btn.setText('登 录')
self.btn.setStyleSheet('font-size:50px')
self.btn.move(self.btn_x, self.le_name_y * 4)
self.btn.resize(self.btn_w, self.btn_h)
self.label = QLabel(self)
self.label.setText('登录状态标识')
self.label.move(self.label_x, self.le_name_y * 3)
self.label.setStyleSheet('font-size:20px')
self.label.resize(self.label_w, self.label_h)
##117############################################占位文本的设置
#
# 现在需求:
# 占位文本标识
#
# 解决方法:
# setPlaceholderText()
# placeholderText()
self.le_name.setPlaceholderText('请输入你的尊姓大名')
self.le_pasword.setPlaceholderText('请输入你的登陆密码')
##117###########################占位文本的设置
##118############################################一次性清空文本内容的按钮
self.le_pasword.setClearButtonEnabled(True)#文本框右端会出现一个圆形叉叉按钮
##118###########################一次性清空文本内容的按钮
##############################################添加自定义行为:密码明文密文切换
action = QAction(self.le_pasword)
action.setIcon(QIcon('eye_open.png'))
def change_():
if self.le_pasword.echoMode()==QLineEdit.Password:
action.setIcon(QIcon('eye_close.png'))
self.le_pasword.setEchoMode(QLineEdit.Normal)
else:
action.setIcon(QIcon('eye_open.png'))
self.le_pasword.setEchoMode(QLineEdit.Password)
action.triggered.connect(change_)
self.le_pasword.addAction(action,QLineEdit.TrailingPosition)
#############################添加自定义行为:密码明文密文切换
##############################################文本自动补全联想
#
# 现在需求:
# 想实现文本的自动补全,文本库资料已经拿到了
#
# 解决方法:
# le.setCompleter(QCompleter(['wangwei','wuise'],le))
#先创建一个完成器对象,列表和父对象,再由父对象设置一个完成器
completer = QCompleter(['wwwiki','weilai','rich'],self.le_name)
self.le_name.setCompleter(completer)
#############################文本自动补全联想
##############################################输入文本的长度限制,并且设置只读属性
#
# 现在需求:
# 限制输入文本的最大长度
#
# 解决方法:
# le.setMaxLength(7) #限制最大字符长度为7
#
self.le_name.setMaxLength(9)
print(self.le_name.maxLength())#获取最大字符长度
# self.le_name.setReadOnly(True)#设置为只读文本框,无法修改
self.le_name.setText('wwe')
#############################输入文本的长度限制,并且设置只读属性
def login_():
name = self.le_name.text()
password = self.le_pasword.text()
state_ID = check_state.judge_(name,password)
if state_ID==CHECK_STATE.SUCCESS:
self.label.setText('登录成功!!')
else:
if state_ID==CHECK_STATE.NAME_ERROR:
self.le_name.setText('')
self.le_pasword.setText('')
self.label.setText('用户名错误,登录失败……')
self.le_name.setFocus()
elif state_ID==CHECK_STATE.PASSWORD_ERROR:
self.le_pasword.setText('')
self.label.setText('密码错误,登录失败……')
self.le_pasword.setFocus()
self.btn.clicked.connect(login_)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
特仑苏牛奶好好喝
发布了15 篇原创文章 · 获赞 0 · 访问量 429
私信
关注
标签:le,name,pasword,简版,PyQt5,label,QLineEdIt,btn,self 来源: https://blog.csdn.net/weixin_43717845/article/details/104195199