鱼C论坛

 找回密码
 立即注册
查看: 11344|回复: 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文档里了,然后注册新账号那个窗口好像写的很随意。你大概看看吧
登录窗口:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from Shop_main import *
class denglu(QWidget):
    """
    登录窗口 :程序的入口
    登录窗口的内容包括两个tabel标签:"账号"、"密码",两个输入框分别用来输入账号及密码
    两个按钮:确定和退出,一个radiobutton用来设置密码的显示格式,一个显示标签用来创建新的账号
    密码在输入时应该默认为掩码输入,点击radiobutton时可以切换密码显示格式
    点击显示标签"创建新用户"时弹出创建窗口
    创建新账号时应该进行核查:账号不许为空不许重复,密码不许为空
    创建完成时把账号及密码存储在本地文件中:账号.txt、密码.txt  并退出关闭创建窗口
    登录时应核查账号与密码的匹配,并根据各种出错情况给出相应的提示信息
    登陆成功时进入主页面并自动退出关闭登录窗口
    """
    def __init__(self):
        super(denglu, self).__init__()
        self.setGeometry(300, 300, 400, 247)
        #登录窗口无边界
        self.setWindowFlags(Qt.FramelessWindowHint)
        #登录窗口透明
        self.setAttribute(Qt.WA_TranslucentBackground, True)
        #定义多个空label
        self.label_null1 = QLabel()
        self.label_null2 = QLabel()
        self.label_null3 = QLabel()
        self.label_null4 = QLabel()
        self.label_new = QLabel()
        #定义创建新账户标签并设置信号槽绑定事件
        self.label_new.setText("<a href='#'>注册新用户</a>")
        self.label_new.setStyleSheet('''color: rgb(253,129,53);''')
        self.label_new.linkActivated.connect(self.idnew)
        #设置隐藏密码RadioButton
        self.btn_check = QRadioButton("显示密码")
        self.btn_check.setStyleSheet('''color: rgb(253,129,53);;''')
        self.btn_check.clicked.connect(self.yanma)
        #登录与退出按钮,设置按钮颜色及事件绑定
        self.btn_denglu = QPushButton("登录")
        self.btn_quxiao = QPushButton("退出")
        self.btn_denglu.setStyleSheet('''color: white;
                        background-color: rgb(218,181,150);''')
        self.btn_quxiao.setStyleSheet('''color: white;
                        background-color: rgb(218,181,150);''')
        self.btn_denglu.clicked.connect(self.check)
        self.btn_quxiao.clicked.connect(self.quxiao)
        #账号和密码
        self.lineedit_id = QLineEdit()
        self.lineedit_id.setPlaceholderText("账号")
        self.lineedit_password = QLineEdit()
        self.lineedit_password.setEchoMode(QLineEdit.Password)
        self.lineedit_password.setPlaceholderText("密码")
        #布局设置
        layout = QHBoxLayout(self)
        wid_denglu_right = QWidget()
        wid_denglu_left = QLabel()
        g = QGridLayout()
        g.addWidget(self.lineedit_id, 1, 1, 1, 2)
        g.addWidget(self.lineedit_password, 2, 1, 1, 2)
        g.addWidget(self.btn_check, 3, 1)
        g.addWidget(self.btn_denglu, 4, 1)
        g.addWidget(self.btn_quxiao, 4, 2)
        g.addWidget(self.label_null1, 5, 1)
        g.addWidget(self.label_null2, 6, 1)
        g.addWidget(self.label_null3, 7, 1)
        g.addWidget(self.label_null4, 8, 1)
        g.addWidget(self.label_new, 9, 2 )
        wid_denglu_right.setLayout(g)
        layout.addWidget(wid_denglu_left)
        layout.addWidget(wid_denglu_right)
        self.setLayout(layout)
    #密码隐藏
    def yanma(self):
        if self.btn_check.isChecked():
            self.lineedit_password.setEchoMode(QLineEdit.Normal)
        else:
            self.lineedit_password.setEchoMode(QLineEdit.Password)
    #登录时核查账号及密码是否正确
    def check(self):
        temp = False
        self.id_password = {}
        id = open("账号.txt")
        password = open("密码.txt")
        i = 0
        for line1 in id:
            m = i+1
            for line2 in password:
                i = i+1
                if i == m:
                    self.id_password[line1]=line2
                    break
                if i < m:
                    continue
                    #如果输入账号不在账号表文件中,则推送消息框提醒
        if self.lineedit_id.text()+"\n" not in self.id_password:
            replay = QMessageBox.warning(self, "!", "账号或密码输入错误", QMessageBox.Yes)
        else:
            if self.id_password[self.lineedit_id.text()+"\n"] == self.lineedit_password.text()+"\n":
                #账号密码验证成功,创建主界面,进入信息管理程序,并关闭登录窗口
                self.shop = Shopmain()
                self.shop.show()
                self.close()
            else:
                replay = QMessageBox.warning(self, "!", "账号或密码输入错误", QMessageBox.Yes)
        id.close()
        password.close()
        #创建新的账号
    def idnew(self):
        self.label_idnew_id = QLabel("账号")
        self.label_idnew_password = QLabel("密码")
        self.lineedit_idnew_id = QLineEdit()
        self.lineedit_idnew_password = QLineEdit()
        self.btn_idnew_quren = QPushButton("注册")
        self.btn_idnew_quren.clicked.connect(self.idnewqueren)
        self.btn_idnew_quxiao = QPushButton("取消")
        self.btn_idnew_quxiao.clicked.connect(self.idnewclose)
        self.idnew = QWidget()
        layout_idnew = QGridLayout()
        layout_idnew.addWidget(self.label_idnew_id, 1, 0)
        layout_idnew.addWidget(self.label_idnew_password, 2, 0)
        layout_idnew.addWidget(self.lineedit_idnew_id, 1, 1, 1, 2)
        layout_idnew.addWidget(self.lineedit_idnew_password, 2, 1, 1, 2)
        layout_idnew.addWidget(self.btn_idnew_quren, 3, 1)
        layout_idnew.addWidget(self.btn_idnew_quxiao, 3, 2)
        self.idnew.setLayout(layout_idnew)
        self.idnew.move(self.pos())
        self.idnew.resize(200, 133)
        self.idnew.setWindowFlags(Qt.FramelessWindowHint)
        self.paintEvent(self)
        self.idnew.setStyleSheet("background-color :rgb(253,216,174)")
        self.idnew.show()
        #新账号注册的确认
    def idnewqueren(self):
        id = open("账号.txt", "r+")
        password = open("密码.txt", "r+")
        self.id_password = {}
        i = 0
        for line1 in id:
            m = i+1
            for line2 in password:
                i = i+1
                if i == m:
                    self.id_password[line1]=line2
                    break
                if i < m:
                    continue
        if  self.lineedit_idnew_id.text() == "":
            replay = QMessageBox.warning(self, "!", "账号不准为空", QMessageBox.Yes)
        else:
            if self.lineedit_idnew_id.text()+"\n" in self.id_password:
                replay = QMessageBox.warning(self, "!", "账号已存在", QMessageBox.Yes)
            else:
                if self.lineedit_idnew_password.text() == "":
                    replay = QMessageBox.warning(self, "!", "密码不准为空", QMessageBox.Yes)
                else:
                    id.write(self.lineedit_idnew_id.text()+"\n")
                    password.write(self.lineedit_idnew_password.text()+"\n")
                    replay = QMessageBox.warning(self, "!", "注册成功!", QMessageBox.Yes)
                    self.idnew.close()
        id.close()
        password.close()
    #添加背景图片
    def paintEvent(self, event):
        painter = QPainter(self)
        pixmap = QPixmap("denglu.jpg")
        painter.drawPixmap(self.rect(), pixmap)
    #关闭创新账号窗口
    def idnewclose(self):
        self.idnew.close()
    #取消创建新账号,并退出创建窗口
    def quxiao(self):
        sys.exit()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    d = denglu()
    d.show()
    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, 2025-1-16 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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