在同一位置隐藏或取消隐藏QLabel

时间:2014-07-27 05:12:21

标签: python python-2.7 pyqt4 qlabel

Login Page

我想显示'无效的用户名'和'无效密码'仅当用户名和密码分别不正确时才进行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()

1 个答案:

答案 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)

这将解决您的问题。