我试图在注册表和登录表单中创建一个函数,如果单击QLineEdit
,则使用QLineEdit
来显示和隐藏密码。我是Python的初学者,我只是试着去做,但这很难。。。我的尝试是不好的,因为如果我点击眼睛按钮,密码会显示出来,但如果再次点击隐藏密码,它将不起作用
from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtWidgets import QPushButton, QLineEdit
import sys
import pymysql
pymysql.install_as_MySQLdb()
class MyWindow(QtWidgets.QMainWindow):
def __init__(self, maxWidth=None):
super(MyWindow, self).__init__()
uic.loadUi('MainWindow.ui', self)
self.eyepass_show()
self.eyepass_hide()
self.btn_show_pwd.clicked.connect(self.eyepass_hide)
self.btn_show_pwd.clicked.connect(self.eyepass_show)
def eyepass_show(self):
self.line_password.setEchoMode(QLineEdit.Normal)
print('show pass')
def eyepass_hide(self):
self.line_password.setEchoMode(QLineEdit.Password)
print('hide pass')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
是否显示隐藏密码,但如果再次单击隐藏密码则不起作用
PyQt5的一大优点是它将自动将信号连接到方法。如果您的应用程序中有一个名为
<mybutton>
的按钮和一个名为on_<mybutton>_clicked
的方法,loadUi将自动连接。所以模式是如果我们将此应用于您的问题,您应该将“显示/隐藏”按钮设置为切换按钮。在Qt设计器中,将checkable属性设置为True(或do
btn_show_pwd.clicked.setChecked(True)
)守则:
另一种可能是将可检查的QAction添加到QLineEdit并连接到
toggled
(或triggered
)信号如果只想在按下鼠标时显示密码,则不要连接到
toggled
信号,而是找到该操作的子QToolButton并连接到pressed
和released
。在这种情况下,操作不需要是可检查的您可以创建单个函数并切换可见性,而不是创建两个单独的方法,如
eyepass_show
和eyepass_hide
。另外,您正试图通过self.btn_show_pwd.clicked.connect(self.eyepass_hide)
和self.btn_show_pwd.clicked.connect(self.eyepass_show)
将同一信号两次连接到两种不同的方法试着这样做:
相关问题 更多 >
编程相关推荐