Python高級進階#020 pyqt5登錄窗體實戰,綜合實踐案例
- 2019 年 11 月 13 日
- 筆記
1.掌握菜單控件,調用類Qmainwindow
2.利用Qmenu的類型,由qmenubar來返回
3.點擊情況:
子菜單addMenu。
直接點擊事件addAction
本節知識視頻教程
以下開始文字講解:
一、案例:登錄窗體
1.實現窗體的加載(有圖標)
2.用戶名和密碼的登錄框
3.能夠將用戶名和密碼獲取過來
二、開發過程
提問:開發思路中需要加載什麼?
1.加載窗體Qwidget Qapplication
2.加載控件Qlabel,Qpushbutton,QLineEdit
3.加載提示框QMessagebox
想要讓窗體加載時候居中的要點
前提是必須要知道窗體的自身的大小。
注意:窗體的大小最好先自定義好,採用resize方法,這樣可以計算出來。
這裡如果實現沒有定義好大小,可能會出現不居中的情況。
如何使用密碼框?
要求用符號代替顯示,不能看見輸入的內容。
我們通過設置qlineedit的輸出模式echomode來配置。
舉例:
self.lePassword.setEchoMode(QLineEdit.Password)
QLineEdit.Password表示密碼模式。
窗體按鈕的配置
為了顯示更加友好,我們可以將不需要的按鈕進行隱藏。
比如隱藏方法縮小按鈕,只顯示關閉按鈕。
#隱藏放大縮小按鈕
self.setWindowFlags(Qt.WindowCloseButtonHint)
退出應用程序
獲取應用程序實例,直接使用exit方法退出。
QApplication.instance().exit()
登錄與退出採用同一個槽進行處理的方法
def myBtnClick(self):
source=self.sender()
if source.text()=="登錄":
pass
elif source.text()=="退出":
QApplication.instance().exit()
提示框的書寫
這裡我們直接提示信息方法。這樣寫的好處是直接可以加載消息,這是一種簡略的配置。
QMessageBox.information(self,"消息","用戶名:"+self.leUsername.text()+",密碼:"+self.lePassword.text(),QMessageBox.Ok)
三、總結強調
1.掌握登錄界面的開發思路
2.掌握密碼模式的設置
3.掌握退出程序
4.掌握消息框的應用
本節知識源代碼:
import sys from PyQt5.QtWidgets import QApplication,QWidget,QMessageBox,QLabel,QLineEdit,QPushButton,QFrame from PyQt5.QtGui import QIcon from PyQt5.QtCore import Qt class MyClass(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("劉金玉編程") self.resize(300,200) self.move(desk.width()/2-self.width()/2,100) myframe=QFrame(self) lbl1=QLabel("用戶名:",myframe) lbl2=QLabel("密 碼:",myframe) lbl2.move(0,30) self.leUsername=QLineEdit(myframe) self.lePassword=QLineEdit(myframe) self.leUsername.move(50,0) self.lePassword.move(50,30) self.lePassword.setEchoMode(QLineEdit.Password) btnLogin=QPushButton("登錄",myframe) btnQuit=QPushButton("退出",myframe) btnLogin.move(0,80) btnQuit.move(80,80) btnLogin.clicked.connect(self.myBtnClick) btnQuit.clicked.connect(self.myBtnClick) myframe.move(50,50) myframe.resize(300,300) #隱藏放大縮小按鈕 self.setWindowFlags(Qt.WindowCloseButtonHint) self.show() def myBtnClick(self): source=self.sender() if source.text()=="登錄": QMessageBox.information(self,"消息","用戶名:"+self.leUsername.text()+",密碼:"+self.lePassword.text(),QMessageBox.Ok) elif source.text()=="退出": QApplication.instance().exit() if __name__=="__main__": app=QApplication(sys.argv) app.setWindowIcon(QIcon("./img/liu.png")) desk=app.desktop() mc=MyClass() app.exec_()