1、明確目的:
(1)打開登陸界面后,輸入對應(yīng)的賬號和密碼,自動進(jìn)入到主界面程序,登陸界面消失;
(2)進(jìn)入主界面程序后,可以返回登陸界面,同時(shí)主界面消失;
(3)達(dá)到指令要求后,可以注冊賬號和密碼,并保存到數(shù)據(jù)庫。(此功能具體實(shí)現(xiàn)暫時(shí)不考慮。)文章來源:http://www.zghlxwxcb.cn/news/detail-502391.html
2、首先,先創(chuàng)建一個(gè)登陸界面,可以通過Pyqt5創(chuàng)建,得到Ui_untitled.py界面程序文件【如下代碼塊】。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'd:\Python_studyltem\軟件登陸界面實(shí)現(xiàn)\login_file\untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_LoginActivity(object):
def setupUi(self, LoginActivity):
LoginActivity.setObjectName("LoginActivity")
LoginActivity.resize(387, 178)
self.centralwidget = QtWidgets.QWidget(LoginActivity)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setMinimumSize(QtCore.QSize(0, 30))
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 4, 1, 1, 1)
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setMinimumSize(QtCore.QSize(0, 30))
self.lineEdit_2.setObjectName("lineEdit_2")
self.gridLayout.addWidget(self.lineEdit_2, 1, 1, 1, 2)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setMinimumSize(QtCore.QSize(0, 30))
self.lineEdit.setObjectName("lineEdit")
self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 2)
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setFrameShape(QtWidgets.QFrame.WinPanel)
self.label_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setMinimumSize(QtCore.QSize(0, 0))
self.label.setFrameShape(QtWidgets.QFrame.WinPanel)
self.label.setFrameShadow(QtWidgets.QFrame.Raised)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setMinimumSize(QtCore.QSize(0, 30))
self.pushButton_2.setObjectName("pushButton_2")
self.gridLayout.addWidget(self.pushButton_2, 4, 2, 1, 1)
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setFrameShape(QtWidgets.QFrame.WinPanel)
self.label_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_3.setMinimumSize(QtCore.QSize(0, 30))
self.lineEdit_3.setSizeIncrement(QtCore.QSize(0, 0))
self.lineEdit_3.setObjectName("lineEdit_3")
self.gridLayout.addWidget(self.lineEdit_3, 2, 1, 1, 2)
LoginActivity.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(LoginActivity)
self.statusbar.setObjectName("statusbar")
LoginActivity.setStatusBar(self.statusbar)
self.retranslateUi(LoginActivity)
QtCore.QMetaObject.connectSlotsByName(LoginActivity)
LoginActivity.setTabOrder(self.lineEdit, self.lineEdit_2)
LoginActivity.setTabOrder(self.lineEdit_2, self.lineEdit_3)
LoginActivity.setTabOrder(self.lineEdit_3, self.pushButton)
LoginActivity.setTabOrder(self.pushButton, self.pushButton_2)
def retranslateUi(self, LoginActivity):
_translate = QtCore.QCoreApplication.translate
LoginActivity.setWindowTitle(_translate("LoginActivity", "MainWindow"))
self.pushButton.setText(_translate("LoginActivity", "登陸"))
self.label_2.setText(_translate("LoginActivity", "<html><head/><body><p align=\"center\"><span style=\" font-size:12pt;\">密碼:</span></p></body></html>"))
self.label.setText(_translate("LoginActivity", "<html><head/><body><p align=\"center\"><span style=\" font-size:12pt;\">賬號:</span></p></body></html>"))
self.pushButton_2.setText(_translate("LoginActivity", "注冊"))
self.label_3.setText(_translate("LoginActivity", "<html><head/><body><p align=\"center\"><span style=\" font-size:12pt;\">指令:</span></p></body></html>"))
3、將該登陸界面展現(xiàn)出來,導(dǎo)入上面的界面程序,代碼如下:
from Ui_untitled import Ui_LoginActivity
import sys
from PyQt5.QtGui import QIcon # 用于添加圖標(biāo)
from PyQt5.QtWidgets import QWidget,QMainWindow,QApplication
from PyQt5.QtCore import pyqtSlot
class Login_main(QMainWindow,Ui_LoginActivity):
def __init__(self):
super().__init__() # 使用超類,繼承父類的屬性及方法
self.setupUi(self) # 構(gòu)造窗體界面
self.setWindowIcon(QIcon("./img/result.png")) #設(shè)置界面圖標(biāo)
self.initUI() # 構(gòu)造功能函數(shù)
def initUI(self):
self.pushButton.setShortcut('Return') # 設(shè)置快捷鍵
self.setWindowTitle("登陸窗口")
if __name__ == "__main__":
app = QApplication(sys.argv)
login_ui = Login_main()
login_ui.show()
sys.exit(app.exec_())
4、制作程序的主界面,得到Ui_test_button.py界面程序文件【如下代碼塊】。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'd:\Python_studyltem\軟件登陸界面實(shí)現(xiàn)\test_button.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(384, 350)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
self.textBrowser.setObjectName("textBrowser")
self.gridLayout.addWidget(self.textBrowser, 3, 0, 1, 1)
self.pushButton1 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton1.setObjectName("pushButton1")
self.gridLayout.addWidget(self.pushButton1, 0, 0, 1, 1)
self.pushButton2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton2.setObjectName("pushButton2")
self.gridLayout.addWidget(self.pushButton2, 1, 0, 1, 1)
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setObjectName("pushButton_3")
self.gridLayout.addWidget(self.pushButton_3, 2, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 384, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton1.setText(_translate("MainWindow", "測試按鈕-1"))
self.pushButton2.setText(_translate("MainWindow", "測試按鈕-2"))
self.pushButton_3.setText(_translate("MainWindow", "返回登陸狀態(tài)"))
5、同樣,將該主界面展現(xiàn)出來,導(dǎo)入上面的主界面py程序,代碼如下:
from Ui_test_button import Ui_MainWindow
import sys
from PyQt5.QtGui import QIcon # 用于添加圖標(biāo)
from PyQt5.QtWidgets import QWidget,QMainWindow,QApplication
from PyQt5.QtCore import pyqtSlot
class Test_window(QMainWindow,Ui_MainWindow): # 繼承至界面文件的主窗口類
def __init__(self):
super().__init__() # 使用超類,繼承父類的屬性及方法
self.setupUi(self) # 構(gòu)造窗體界面
self.setWindowIcon(QIcon("./img/result.png"))
self.setWindowTitle("Test_button") # 設(shè)置窗體主體
self.initUI() # 構(gòu)造功能函數(shù)
def initUI(self):
#此處添加功能連接函數(shù)
self.pushButton1.clicked.connect(self.bofang_video) #自定義按鈕連接自定義槽函數(shù)
# self.pushButton1.pressed.connect() #不同的按鈕點(diǎn)擊方式
# self.pushButton1.released.connect()
@pyqtSlot()
def on_pushButton2_clicked(self): #利用QT自帶槽函數(shù)直接連接按鈕
self.textBrowser.append("點(diǎn)擊按鈕2!")
self.textBrowser.append("<font color=\"#00FF00\">點(diǎn)擊按鈕2!</font> ") #設(shè)置字體顏色
self.textBrowser.append("======================")
def bofang_video(self):
print("123")
self.textBrowser.append("點(diǎn)擊按鈕1!")
self.textBrowser.append("<font color=\"#FF0000\">點(diǎn)擊按鈕1!</font> ") #設(shè)置字體顏色
self.textBrowser.append("======================")
if __name__ == "__main__":
app = QApplication(sys.argv)
ui2 = Test_window()
ui2.show()
sys.exit(app.exec_())
6、當(dāng)前,已經(jīng)將登陸界面和主界面運(yùn)行程序成功完成,接下就是將兩個(gè)界面程序,放入到一個(gè)app程序中監(jiān)控,并同時(shí)操控兩個(gè)界面程序,代碼如下;
from login import Login_main
from test_main import Test_window
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMessageBox
'''
調(diào)用兩個(gè)界面,點(diǎn)擊退出,可退回界面
'''
# 保存自定義賬號和密碼
save_information = {"save_zhanghao":["admin",]}
save_information_password = {"password":["19970128",]}
# 登陸流程
def control_ui():
zhanghao = login_ui.lineEdit.text()
password = login_ui.lineEdit_2.text()
if zhanghao in save_information.get("save_zhanghao"):
zhanghao_ret = True
else:
print("賬號不存在!")
QMessageBox.warning(login_ui,"警告", "賬號不存在!", QMessageBox.Cancel)
zhanghao_ret = False
return
if password in save_information_password.get("password"):
password_ret = True
else:
print("密碼輸入錯(cuò)誤!")
QMessageBox.warning(login_ui,"警告", "密碼輸入錯(cuò)誤!", QMessageBox.Cancel)
password_ret = False
return
if zhanghao_ret == True and password_ret == True:
# 打開主界面
print("打開主界面!")
# 關(guān)閉登陸界面
login_ui.close()
# 打開主程序運(yùn)行界面
main_ui.show()
# 注冊流程,未完善,可自行自定義完成
def zhuche():
zhanghao = login_ui.lineEdit.text()
password = login_ui.lineEdit_2.text()
zhiling = login_ui.lineEdit_3.text()
if zhiling == "8888":
print("注冊信息!")
QMessageBox.warning(login_ui,"提示", "可以注冊賬號!", QMessageBox.Cancel)
else:
QMessageBox.warning(login_ui,"警告", "指令輸入錯(cuò)誤,無法注冊賬號!", QMessageBox.Cancel)
def back_login():
login_ui.show()
main_ui.close()
login_ui.lineEdit.clear()
login_ui.lineEdit_2.clear()
if __name__ == "__main__":
app = QApplication(sys.argv)
login_ui = Login_main()
login_ui.pushButton.clicked.connect(control_ui)
login_ui.pushButton_2.clicked.connect(zhuche)
login_ui.show()
main_ui = Test_window()
main_ui.pushButton_3.clicked.connect(back_login)
sys.exit(app.exec_())
7、展示情況如下:
登陸界面展示文章來源地址http://www.zghlxwxcb.cn/news/detail-502391.html
到了這里,關(guān)于Python-如何制作一個(gè)簡單的登陸界面【記錄】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!