DOLLAR. 发表于 2021-5-12 09:48:16

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


我们这学期在学习PYqt5制作一个学生系统,我在编写登录界面时想要实现一个查看密码功能,我的信号槽是这样写的self.viewpwd.clicked.connect(self.passit)
def passit(self):
    self.password.show()我的密码隐藏是这样写的:self.password.setEchoMode(QLineEdit.Password)我的查看密码按钮命名为viewpwd,我这样写方法不能实现显示密码,有没有大神指导一下

hrp 发表于 2021-5-12 10:11:50

本帖最后由 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)

DOLLAR. 发表于 2021-5-12 10:55:43

hrp 发表于 2021-5-12 10:11
反向操作就好了




请问,第二个判断条件我写 ifQLineEdit.text() == self.password.setEchoMode(QLineEdit.Password)
为什么会闪退呀

DOLLAR. 发表于 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

hrp 发表于 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)

DOLLAR. 发表于 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)

是这样吗,我这样写会因为内存不够直接闪退

hrp 发表于 2021-5-12 13:46:55

DOLLAR. 发表于 2021-5-12 13:27
def passit(self):
      if self.password.echoMode(QLineEdit.Password):
            self.pa ...

我写的方法闪退是吗?
你最好将抛出的异常发出来看一下

DOLLAR. 发表于 2021-5-12 14:05:20

hrp 发表于 2021-5-12 13:46
我写的方法闪退是吗?
你最好将抛出的异常发出来看一下

file:///C:/Users/Administrator/Pictures/Camera%20Roll/2.PNG

DOLLAR. 发表于 2021-5-12 14:06:02

DOLLAR. 发表于 2021-5-12 14:05


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

图片发不出来,就直接复制给你了

hrp 发表于 2021-5-12 14:16:28

本帖最后由 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是不接受参数的。

DOLLAR. 发表于 2021-5-12 14:40:01

hrp 发表于 2021-5-12 14:16
你先试一下5楼我写的,echoMode是不接受参数的。

厉害大佬,还有一个问题,有关注册界面连接数据库的,不知道你能否帮我解答一下

阿奇_o 发表于 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_()

DOLLAR. 发表于 2021-5-12 15:06:38

阿奇_o 发表于 2021-5-12 15:04


谢谢你,已经实现了,你可以看看我另外一个帖子,有关PYqt5连接数据库的问题
页: [1]
查看完整版本: 登录界面设置了密码掩码,如何通过函数显示密码,类似密码可见功能