最终界面如下:
然后是代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QLineEdit, QLabel
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 400, 300)
self.bt1 = QPushButton('登录', self)
self.bt1.setGeometry(115, 150, 70 ,30)
self.bt1.clicked.connect(self.showMessage) # 相当于就是建立了一个click的处理事件
self.usr = QLabel("用户:", self) # 这里的好像都需要把self作为第二个参数传进去才能显示出来
self.usr.setGeometry(50, 50, 30, 30)
self.pwd = QLabel("密码:", self)
self.pwd.setGeometry(50, 80, 30, 30)
self.text1 = QLineEdit(self)#没有self的话连框都出不来
self.text1.selectAll()
self.text1.setFocus()
self.text1.setGeometry(80, 50, 150 ,30)
self.text2 = QLineEdit( self)
self.text2.selectAll()
self.text2.setFocus()
self.text2.setGeometry(80, 80, 150 ,30)
self.text2.setEchoMode(QLineEdit.Password)
self.show()
def showMessage(self):
acount = self.text1.text() #这里text应该不需要转为字符串吧,返回的应该就是一个字符串。
password= self.text2.text()
print(acount)
print(password)
if len(password) == 0:
QMessageBox.warning(self, "警告", "密码为空")
else:
QMessageBox.warning(self, "警告", "密码长度低于6位")
if acount == "jackhe" and password == "123456" :
QMessageBox.about(self, '','登录成功')
else:
QMessageBox.about(self, '','登录失败!')
def closeEvent(self, event):
reply = QMessageBox.question(self, '确认', '确认退出吗', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
先讲我写完之后的第一感受吧:
感觉这个很捞,因为我发现从知乎上复制下来的不知道为啥会有缩进错误,然后干脆自己重写了一遍,或者是回退到上一行,有分号的enter一下就好。对我这个python小白来说,python的缩进真的恶心,压根看不出来哪里缩进不对,各种报indent。。Java的括号多舒服啊! 然后是忽然记起来python的变量不需要声明,直接使用就行,我第一反应就是去找哪里声明的,,尴尬。还有就是它不会自己自动导包,你需要啥包得自己去import,尴尬。还有就是里面的self的使用泛滥得不是你所能想象,调用方法必须来一个self,使用变量可以来个self。
然后回到我们得代码中来,看看怎么写这个登录界面吧。
(下面的构造函数是我从Java里引入的概念,感觉也是这个概念,大家自行理解)
先看第一步:
if __name__ == '__main__':
app = QApplication(sys.argv