鱼C论坛

 找回密码
 立即注册
查看: 10813|回复: 4

[已解决]pyqt5编写一个账号密码登录可跳转的界面程序

[复制链接]
发表于 2018-6-11 08:58:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求大神帮忙 一个用pyqt5 实现一个可输入账号密码登录实现跳转到主界面的代码,萌新一枚
最佳答案
2018-6-11 09:15:50
我好像写过,等我回去可以找找看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-11 09:15:50 | 显示全部楼层    本楼为最佳答案   
我好像写过,等我回去可以找找看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-11 09:23:35 | 显示全部楼层
小酒酒 发表于 2018-6-11 09:15
我好像写过,等我回去可以找找看

谢谢了,刚学这个感觉有点懵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-13 09:26:18 | 显示全部楼层
才想起来😂😂sorry,找了找,还好,还在。解释一下吧,当初设计时好像把账号和密码都存在本地的txt文档里了,然后注册新账号那个窗口好像写的很随意。你大概看看吧
  1. 登录窗口:
  2. import sys
  3. from PyQt5.QtWidgets import *
  4. from PyQt5.QtGui import *
  5. from PyQt5.QtCore import *
  6. from Shop_main import *
  7. class denglu(QWidget):
  8.     """
  9.     登录窗口 :程序的入口
  10.     登录窗口的内容包括两个tabel标签:"账号"、"密码",两个输入框分别用来输入账号及密码
  11.     两个按钮:确定和退出,一个radiobutton用来设置密码的显示格式,一个显示标签用来创建新的账号
  12.     密码在输入时应该默认为掩码输入,点击radiobutton时可以切换密码显示格式
  13.     点击显示标签"创建新用户"时弹出创建窗口
  14.     创建新账号时应该进行核查:账号不许为空不许重复,密码不许为空
  15.     创建完成时把账号及密码存储在本地文件中:账号.txt、密码.txt  并退出关闭创建窗口
  16.     登录时应核查账号与密码的匹配,并根据各种出错情况给出相应的提示信息
  17.     登陆成功时进入主页面并自动退出关闭登录窗口
  18.     """
  19.     def __init__(self):
  20.         super(denglu, self).__init__()
  21.         self.setGeometry(300, 300, 400, 247)
  22.         #登录窗口无边界
  23.         self.setWindowFlags(Qt.FramelessWindowHint)
  24.         #登录窗口透明
  25.         self.setAttribute(Qt.WA_TranslucentBackground, True)
  26.         #定义多个空label
  27.         self.label_null1 = QLabel()
  28.         self.label_null2 = QLabel()
  29.         self.label_null3 = QLabel()
  30.         self.label_null4 = QLabel()
  31.         self.label_new = QLabel()
  32.         #定义创建新账户标签并设置信号槽绑定事件
  33.         self.label_new.setText("<a href='#'>注册新用户</a>")
  34.         self.label_new.setStyleSheet('''color: rgb(253,129,53);''')
  35.         self.label_new.linkActivated.connect(self.idnew)
  36.         #设置隐藏密码RadioButton
  37.         self.btn_check = QRadioButton("显示密码")
  38.         self.btn_check.setStyleSheet('''color: rgb(253,129,53);;''')
  39.         self.btn_check.clicked.connect(self.yanma)
  40.         #登录与退出按钮,设置按钮颜色及事件绑定
  41.         self.btn_denglu = QPushButton("登录")
  42.         self.btn_quxiao = QPushButton("退出")
  43.         self.btn_denglu.setStyleSheet('''color: white;
  44.                         background-color: rgb(218,181,150);''')
  45.         self.btn_quxiao.setStyleSheet('''color: white;
  46.                         background-color: rgb(218,181,150);''')
  47.         self.btn_denglu.clicked.connect(self.check)
  48.         self.btn_quxiao.clicked.connect(self.quxiao)
  49.         #账号和密码
  50.         self.lineedit_id = QLineEdit()
  51.         self.lineedit_id.setPlaceholderText("账号")
  52.         self.lineedit_password = QLineEdit()
  53.         self.lineedit_password.setEchoMode(QLineEdit.Password)
  54.         self.lineedit_password.setPlaceholderText("密码")
  55.         #布局设置
  56.         layout = QHBoxLayout(self)
  57.         wid_denglu_right = QWidget()
  58.         wid_denglu_left = QLabel()
  59.         g = QGridLayout()
  60.         g.addWidget(self.lineedit_id, 1, 1, 1, 2)
  61.         g.addWidget(self.lineedit_password, 2, 1, 1, 2)
  62.         g.addWidget(self.btn_check, 3, 1)
  63.         g.addWidget(self.btn_denglu, 4, 1)
  64.         g.addWidget(self.btn_quxiao, 4, 2)
  65.         g.addWidget(self.label_null1, 5, 1)
  66.         g.addWidget(self.label_null2, 6, 1)
  67.         g.addWidget(self.label_null3, 7, 1)
  68.         g.addWidget(self.label_null4, 8, 1)
  69.         g.addWidget(self.label_new, 9, 2 )
  70.         wid_denglu_right.setLayout(g)
  71.         layout.addWidget(wid_denglu_left)
  72.         layout.addWidget(wid_denglu_right)
  73.         self.setLayout(layout)
  74.     #密码隐藏
  75.     def yanma(self):
  76.         if self.btn_check.isChecked():
  77.             self.lineedit_password.setEchoMode(QLineEdit.Normal)
  78.         else:
  79.             self.lineedit_password.setEchoMode(QLineEdit.Password)
  80.     #登录时核查账号及密码是否正确
  81.     def check(self):
  82.         temp = False
  83.         self.id_password = {}
  84.         id = open("账号.txt")
  85.         password = open("密码.txt")
  86.         i = 0
  87.         for line1 in id:
  88.             m = i+1
  89.             for line2 in password:
  90.                 i = i+1
  91.                 if i == m:
  92.                     self.id_password[line1]=line2
  93.                     break
  94.                 if i < m:
  95.                     continue
  96.                     #如果输入账号不在账号表文件中,则推送消息框提醒
  97.         if self.lineedit_id.text()+"\n" not in self.id_password:
  98.             replay = QMessageBox.warning(self, "!", "账号或密码输入错误", QMessageBox.Yes)
  99.         else:
  100.             if self.id_password[self.lineedit_id.text()+"\n"] == self.lineedit_password.text()+"\n":
  101.                 #账号密码验证成功,创建主界面,进入信息管理程序,并关闭登录窗口
  102.                 self.shop = Shopmain()
  103.                 self.shop.show()
  104.                 self.close()
  105.             else:
  106.                 replay = QMessageBox.warning(self, "!", "账号或密码输入错误", QMessageBox.Yes)
  107.         id.close()
  108.         password.close()
  109.         #创建新的账号
  110.     def idnew(self):
  111.         self.label_idnew_id = QLabel("账号")
  112.         self.label_idnew_password = QLabel("密码")
  113.         self.lineedit_idnew_id = QLineEdit()
  114.         self.lineedit_idnew_password = QLineEdit()
  115.         self.btn_idnew_quren = QPushButton("注册")
  116.         self.btn_idnew_quren.clicked.connect(self.idnewqueren)
  117.         self.btn_idnew_quxiao = QPushButton("取消")
  118.         self.btn_idnew_quxiao.clicked.connect(self.idnewclose)
  119.         self.idnew = QWidget()
  120.         layout_idnew = QGridLayout()
  121.         layout_idnew.addWidget(self.label_idnew_id, 1, 0)
  122.         layout_idnew.addWidget(self.label_idnew_password, 2, 0)
  123.         layout_idnew.addWidget(self.lineedit_idnew_id, 1, 1, 1, 2)
  124.         layout_idnew.addWidget(self.lineedit_idnew_password, 2, 1, 1, 2)
  125.         layout_idnew.addWidget(self.btn_idnew_quren, 3, 1)
  126.         layout_idnew.addWidget(self.btn_idnew_quxiao, 3, 2)
  127.         self.idnew.setLayout(layout_idnew)
  128.         self.idnew.move(self.pos())
  129.         self.idnew.resize(200, 133)
  130.         self.idnew.setWindowFlags(Qt.FramelessWindowHint)
  131.         self.paintEvent(self)
  132.         self.idnew.setStyleSheet("background-color :rgb(253,216,174)")
  133.         self.idnew.show()
  134.         #新账号注册的确认
  135.     def idnewqueren(self):
  136.         id = open("账号.txt", "r+")
  137.         password = open("密码.txt", "r+")
  138.         self.id_password = {}
  139.         i = 0
  140.         for line1 in id:
  141.             m = i+1
  142.             for line2 in password:
  143.                 i = i+1
  144.                 if i == m:
  145.                     self.id_password[line1]=line2
  146.                     break
  147.                 if i < m:
  148.                     continue
  149.         if  self.lineedit_idnew_id.text() == "":
  150.             replay = QMessageBox.warning(self, "!", "账号不准为空", QMessageBox.Yes)
  151.         else:
  152.             if self.lineedit_idnew_id.text()+"\n" in self.id_password:
  153.                 replay = QMessageBox.warning(self, "!", "账号已存在", QMessageBox.Yes)
  154.             else:
  155.                 if self.lineedit_idnew_password.text() == "":
  156.                     replay = QMessageBox.warning(self, "!", "密码不准为空", QMessageBox.Yes)
  157.                 else:
  158.                     id.write(self.lineedit_idnew_id.text()+"\n")
  159.                     password.write(self.lineedit_idnew_password.text()+"\n")
  160.                     replay = QMessageBox.warning(self, "!", "注册成功!", QMessageBox.Yes)
  161.                     self.idnew.close()
  162.         id.close()
  163.         password.close()
  164.     #添加背景图片
  165.     def paintEvent(self, event):
  166.         painter = QPainter(self)
  167.         pixmap = QPixmap("denglu.jpg")
  168.         painter.drawPixmap(self.rect(), pixmap)
  169.     #关闭创新账号窗口
  170.     def idnewclose(self):
  171.         self.idnew.close()
  172.     #取消创建新账号,并退出创建窗口
  173.     def quxiao(self):
  174.         sys.exit()
  175. if __name__ == "__main__":
  176.     app = QApplication(sys.argv)
  177.     d = denglu()
  178.     d.show()
  179.     sys.exit(app.exec())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 14:43:07 | 显示全部楼层
本帖最后由 supper蛋蛋 于 2021-4-21 20:01 编辑

为啥我的输入和txt里的判断,总是不行,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 14:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表