鱼C论坛

 找回密码
 立即注册
查看: 2017|回复: 12

[已解决]登录界面设置了密码掩码,如何通过函数显示密码,类似密码可见功能

[复制链接]
发表于 2021-5-12 09:48:16 | 显示全部楼层 |阅读模式

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

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

x
1.PNG
我们这学期在学习PYqt5制作一个学生系统,我在编写登录界面时想要实现一个查看密码功能,我的信号槽是这样写的self.viewpwd.clicked.connect(self.passit)
def passit(self):
    self.password.show()我的密码隐藏是这样写的:self.password.setEchoMode(QLineEdit.Password)我的查看密码按钮命名为viewpwd,我这样写方法不能实现显示密码,有没有大神指导一下
最佳答案
2021-5-12 11:45:24
DOLLAR. 发表于 2021-5-12 11:32
我刚才改写成这样,但是还是实现不了
   def passit(self):
        rec = True

猜测获取显示模式的方法是echoMode,我用手机不好试,你试试看行不行
def passit(self):
    if self.password.echoMode() == QLineEdit.Password:
        self.password.setEchoMode(QLineEdit.Normal)
    else:
        self.password.setEchoMode(QLineEdit.Password)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-12 10:11:50 From FishC Mobile | 显示全部楼层
本帖最后由 hrp 于 2021-5-12 10:17 编辑

反向操作就好了
def passit(self):
    self.password.setEchoMode(QLineEdit.Normal)


甚至你可以给passit加点逻辑,先判断显示模式,再设置显示反的模式,这样点一次显示,再点一次隐藏
def passit(self):
    if self.password.显示模式为password(自己查方法改这里):
        self.password.setEchoMode(QLineEdit.Normal)
    else:
        self.password.setEchoMode(QLineEdit.Password)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 10:55:43 | 显示全部楼层
hrp 发表于 2021-5-12 10:11
反向操作就好了

请问,第二个判断条件我写 if  QLineEdit.text() == self.password.setEchoMode(QLineEdit.Password)
为什么会闪退呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 11:32:11 | 显示全部楼层
hrp 发表于 2021-5-12 10:11
反向操作就好了

我刚才改写成这样,但是还是实现不了
   def passit(self):
        rec = True
        if rec:
            self.password.setEchoMode(QLineEdit.Normal)
            rec == False
        elif rec == False:
            self.password.setEchoMode(QLineEdit.Password)
            rec == True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-12 11:45:24 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
DOLLAR. 发表于 2021-5-12 11:32
我刚才改写成这样,但是还是实现不了
   def passit(self):
        rec = True

猜测获取显示模式的方法是echoMode,我用手机不好试,你试试看行不行
def passit(self):
    if self.password.echoMode() == QLineEdit.Password:
        self.password.setEchoMode(QLineEdit.Normal)
    else:
        self.password.setEchoMode(QLineEdit.Password)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 13:27:19 | 显示全部楼层
hrp 发表于 2021-5-12 11:45
猜测获取显示模式的方法是echoMode,我用手机不好试,你试试看行不行

    def passit(self):
        if self.password.echoMode(QLineEdit.Password):
            self.password.setEchoMode(QLineEdit.Normal)
        else:
            self.password.setEchoMode(QLineEdit.Password)

是这样吗,我这样写会因为内存不够直接闪退
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-12 13:46:55 From FishC Mobile | 显示全部楼层
DOLLAR. 发表于 2021-5-12 13:27
def passit(self):
        if self.password.echoMode(QLineEdit.Password):
            self.pa ...

我写的方法闪退是吗?
你最好将抛出的异常发出来看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 14:05:20 | 显示全部楼层
hrp 发表于 2021-5-12 13:46
我写的方法闪退是吗?
你最好将抛出的异常发出来看一下

file:///C:/Users/Administrator/Pictures/Camera%20Roll/2.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 14:06:02 | 显示全部楼层

Document\Anaconda\python.exe D:/Document/StudentMangementSystem/run.py
Traceback (most recent call last):
  File "D:/Document/StudentMangementSystem/run.py", line 23, in passit
    if self.password.echoMode(QLineEdit.Password):
TypeError: echoMode(self): too many arguments

图片发不出来,就直接复制给你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-12 14:16:28 From FishC Mobile | 显示全部楼层
本帖最后由 hrp 于 2021-5-12 14:19 编辑
DOLLAR. 发表于 2021-5-12 14:06
Document\Anaconda\python.exe D:/Document/StudentMangementSystem/run.py
Traceback (most recent cal ...


你先试一下5楼我写的,echoMode是不接受参数的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 14:40:01 | 显示全部楼层
hrp 发表于 2021-5-12 14:16
你先试一下5楼我写的,echoMode是不接受参数的。

厉害大佬,还有一个问题,有关注册界面连接数据库的,不知道你能否帮我解答一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-12 15:04:04 | 显示全部楼层
from PyQt5 import QtCore, QtGui, QtWidgets
from qtwidgets import PasswordEdit
# https://stackoverflow.com/questions/23634843/password-form-in-pyqt

class Window(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        password = PasswordEdit()
        self.setCentralWidget(password)


app = QtWidgets.QApplication([])
w = Window()
w.show()
app.exec_()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-12 15:06:38 | 显示全部楼层

谢谢你,已经实现了,你可以看看我另外一个帖子,有关PYqt5连接数据库的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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