我想显示'无效的用户名'和'无效密码'仅当用户名和密码分别不正确时才进行QLabel,否则我想隐藏它们。
我尝试使用hide()和show()方法,但QLabel使用show()方法显示在单独的弹出窗口中,而不是显示在上面显示的位置(黑框中)。 / p>
我正在用Python编写代码。
请建议。
导入的图书馆:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
代码如下:
#Labels
self.ErrorUsrName = QLabel("Invalid Username")
self.ErrorPasswd = QLabel("Invalid Password")
#Buttons
self.Lbutton = QPushButton("Login")
self.Cbutton = QPushButton("Cancel")
#Line Edits
self.UsrName = QLineEdit("Username")
self.Passwd = QLineEdit("Password")
self.UsrName.selectAll()
#Grid Layout
self.grid = QGridLayout()
self.grid.addWidget(self.UsrName,1,0)
self.grid.addWidget(self.ErrorUsrName.hide(),2,0)
self.grid.addWidget(self.Passwd,3,0)
self.grid.addWidget(self.ErrorPasswd.hide(),4,0)
self.grid.addWidget(self.Lbutton,5,0)
self.grid.addWidget(self.Cbutton,6,0)
self.setLayout(self.grid)
self.UsrName.setFocus()
#Signals
self.connect(self.Cbutton,SIGNAL("clicked()"), self, SLOT("reject()"))
self.connect(self.Lbutton,SIGNAL("clicked()"),self.login)
按钮的登录功能
def login(self):
if (self.UsrName.text() == "Ejaz" and self.Passwd.text() == "test"):
print "Login Successful!"
elif self.UsrName.text() <> "Ejaz":
self.ErrorUsrName.show()
elif self.Passwd.text() <> "test":
self.ErrorPasswd.show()
答案 0 :(得分:1)
您的问题如下:
self.grid.addWidget(self.ErrorUsrName.hide(),2,0)
...
self.grid.addWidget(self.ErrorPasswd.hide(),4,0)
隐藏功能不会返回QLabel对象,因此您无法将它们添加到网格中。 你应该在其他地方调用hide()函数,例如:
#Labels
self.ErrorUsrName = QLabel("Invalid Username")
self.ErrorUsrName.hide()
self.ErrorPasswd = QLabel("Invalid Password")
self.ErrorPasswd.hide()
...
self.grid.addWidget(self.ErrorUsrName,2,0)
self.grid.addWidget(self.ErrorPasswd,4,0)
这将解决您的问题。