Firebase signinでGUI Pythonアプリを作成すること
我々は、ファイアウォールのログインとサインアップ機能を持つPythonとGUIアプリケーションを作成します.
サインアップ→
サインイン--
ステップ1 ->最初のステップはFireBaseプロジェクトを作成することです.
https://console.firebase.comでFireBaseコンソールに移動します.見つからない場合は、新しいFireBase Webプロジェクトを作成します.
ステップ2 -> 2番目のステップは、firebaseという名前の新しいPythonファイルを作成することです.PYまたはメイン.py ( nameは問題ではありません).次にPIPを使用します.
あなたが行う仕事に基づいて
Step 10 ->最後のステップでif if文でウィンドウを開始させる
コード全体が
サインアップ→
サインイン--
ステップ1 ->最初のステップはFireBaseプロジェクトを作成することです.
https://console.firebase.comでFireBaseコンソールに移動します.見つからない場合は、新しいFireBase Webプロジェクトを作成します.
ステップ2 -> 2番目のステップは、firebaseという名前の新しいPythonファイルを作成することです.PYまたはメイン.py ( nameは問題ではありません).次にPIPを使用します.
pip install pyrebase
ステップ3 -> 3番目の手順はpyp 5をpip install pyqt 5 ( Windows用)を使ってインストールすることです.pip install PyQt5
pip install pyqt5-tools
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import pyrebase
ステップ4 -> PyRebaseでfirebaseを初期化するconfig = {
"apiKey": "AIzaSyDZw2TKNMPLkFBI7qPzklTGbd8bYkIyfUc",
"authDomain": "py-firebase-f97fc.firebaseapp.com",
"databaseURL": "https://py-firebase-f97fc-default-rtdb.firebaseio.com",
"projectId": "py-firebase-f97fc",
"storageBucket": "py-firebase-f97fc.appspot.com",
"messagingSenderId": "130186938120",
"appId": "1:130186938120:web:d8b87ef2a01af62dbf4ebd",
"measurementId": "G-9R811DMZEL",
"serviceAccount":".\py-firebase-f97fc-firebase-adminsdk-7w4qw-52ae79b7e5.json"
}
firebase = pyrebase.initialize_app(config)
ステップ5 ->ユーザが存在するかどうかを確認するtry:
IsUser=user['userId']
except:
IsUser = None
ステップ6 -->ステップ6でauthを定義し始めるauth = firebase.auth()
ステップ7 ->現在、クラスを作成する時間とユーザが存在するかどうかをチェックするclass Ui_Dialog(object):
# if IsUser == None :
ステップ8 --> GUIを定義します.私はQt 5のデザイナーとそれを作成して、あなた自身を作成したり、練習のために私のコードを使用します.
def setupUi(self, Dialog):
Dialog.setObjectName("Python with Firebase")
Dialog.resize(447, 621)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.verticalFrame = QtWidgets.QFrame(Dialog)
self.verticalFrame.setMinimumSize(QtCore.QSize(429, 300))
self.verticalFrame.setObjectName("verticalFrame")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalFrame)
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit = QtWidgets.QLineEdit(self.verticalFrame)
self.lineEdit.setMinimumSize(QtCore.QSize(300, 40))
self.lineEdit.setMaximumSize(QtCore.QSize(500, 40))
self.lineEdit.setStyleSheet("border-radius:2px;\n"
"padding:2px;\n"
"content:'Email';\n"
"border:1px solid #262626;")
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit, 0, QtCore.Qt.AlignHCenter)
self.lineEdit_2 = QtWidgets.QLineEdit(self.verticalFrame)
self.lineEdit_2.setMinimumSize(QtCore.QSize(300, 40))
self.lineEdit_2.setMaximumSize(QtCore.QSize(300, 40))
self.lineEdit_2.setStyleSheet("\n"
"border-radius:2px;\n"
"padding:2px;\n"
"content:'Password';\n"
"border:1px solid #262626;")
self.lineEdit_2.setObjectName("lineEdit_2")
self.verticalLayout.addWidget(self.lineEdit_2, 0, QtCore.Qt.AlignHCenter)
self.toolButton_2 = QtWidgets.QToolButton(self.verticalFrame)
self.toolButton_2.setMinimumSize(QtCore.QSize(300, 40))
self.toolButton_2.setMaximumSize(QtCore.QSize(300, 40))
self.toolButton_2.setStyleSheet("background:#ccc;\n"
"border-radius:2px;\n"
"\n"
"")
self.toolButton_2.setObjectName("toolButton_2")
self.verticalLayout.addWidget(self.toolButton_2, 0, QtCore.Qt.AlignHCenter)
self.toolButton = QtWidgets.QToolButton(self.verticalFrame)
self.toolButton.setMinimumSize(QtCore.QSize(300, 40))
self.toolButton.setMaximumSize(QtCore.QSize(300, 40))
self.toolButton.setStyleSheet("background-color:#f23041;\n"
"border-radius:5px;\n"
"color:#fff;\n"
"")
self.toolButton.setObjectName("toolButton")
self.verticalLayout.addWidget(self.toolButton, 0, QtCore.Qt.AlignHCenter)
self.gridLayout.addWidget(self.verticalFrame, 0, 1, 1, 1)
self.toolButton_2.clicked.connect(self.signin)
self.toolButton.clicked.connect(self.signup)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.toolButton_2.setText(_translate("Dialog", "SignIn"))
self.toolButton.setText(_translate("Dialog", "SignUp"))
次の手順では、OnClick関数を定義しますself.toolButton_2.clicked.connect(self.signin)
self.toolButton.clicked.connect(self.signup)
ステップ9 -- onclick関数def signup(self):
email = self.lineEdit.text()
password = self.lineEdit.text()
user = auth.create_user_with_email_and_password(email, password)
user = auth.refresh(user['refreshToken'])
print('Sucessfully accounted in: {0}'.format(user['userId']))
IsUser=user['userId']
def signin(self):
email = self.lineEdit.text()
password = self.lineEdit.text()
user = auth.sign_in_with_email_and_password(email, password)
user = auth.refresh(user['refreshToken'])
print('Sucessfully logged in: {0}'.format(user['userId']))
IsUser=user['userId']
ここでは、私たちは、あなたがコンソールに印刷されるメッセージでfirebaseログインとsignup機能を宣言しました、そして、タスクが成功するならば、あなたはそれを見ることができます.あなたが行う仕事に基づいて
Step 10 ->最後のステップでif if文でウィンドウを開始させる
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_Dialog()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
アプリを実行します.コード全体が
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import pyrebase
config = {
"apiKey": "AIzaSyDZw2TKNMPLkFBI7qPzklTGbd8bYkIyfUc",
"authDomain": "py-firebase-f97fc.firebaseapp.com",
"databaseURL": "https://py-firebase-f97fc-default-rtdb.firebaseio.com",
"projectId": "py-firebase-f97fc",
"storageBucket": "py-firebase-f97fc.appspot.com",
"messagingSenderId": "130186938120",
"appId": "1:130186938120:web:d8b87ef2a01af62dbf4ebd",
"measurementId": "G-9R811DMZEL",
"serviceAccount":".\py-firebase-f97fc-firebase-adminsdk-7w4qw-52ae79b7e5.json"
}
firebase = pyrebase.initialize_app(config)
try:
IsUser=user['userId']
except:
IsUser = None
auth = firebase.auth()
class Ui_Dialog(object):
# if IsUser == None :
def setupUi(self, Dialog):
Dialog.setObjectName("Python with Firebase")
Dialog.resize(447, 621)
self.gridLayout = QtWidgets.QGridLayout(Dialog)
self.gridLayout.setObjectName("gridLayout")
self.verticalFrame = QtWidgets.QFrame(Dialog)
self.verticalFrame.setMinimumSize(QtCore.QSize(429, 300))
self.verticalFrame.setObjectName("verticalFrame")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalFrame)
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit = QtWidgets.QLineEdit(self.verticalFrame)
self.lineEdit.setMinimumSize(QtCore.QSize(300, 40))
self.lineEdit.setMaximumSize(QtCore.QSize(500, 40))
self.lineEdit.setStyleSheet("border-radius:2px;\n"
"padding:2px;\n"
"content:'Email';\n"
"border:1px solid #262626;")
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit, 0, QtCore.Qt.AlignHCenter)
self.lineEdit_2 = QtWidgets.QLineEdit(self.verticalFrame)
self.lineEdit_2.setMinimumSize(QtCore.QSize(300, 40))
self.lineEdit_2.setMaximumSize(QtCore.QSize(300, 40))
self.lineEdit_2.setStyleSheet("\n"
"border-radius:2px;\n"
"padding:2px;\n"
"content:'Password';\n"
"border:1px solid #262626;")
self.lineEdit_2.setObjectName("lineEdit_2")
self.verticalLayout.addWidget(self.lineEdit_2, 0, QtCore.Qt.AlignHCenter)
self.toolButton_2 = QtWidgets.QToolButton(self.verticalFrame)
self.toolButton_2.setMinimumSize(QtCore.QSize(300, 40))
self.toolButton_2.setMaximumSize(QtCore.QSize(300, 40))
self.toolButton_2.setStyleSheet("background:#ccc;\n"
"border-radius:2px;\n"
"\n"
"")
self.toolButton_2.setObjectName("toolButton_2")
self.verticalLayout.addWidget(self.toolButton_2, 0, QtCore.Qt.AlignHCenter)
self.toolButton = QtWidgets.QToolButton(self.verticalFrame)
self.toolButton.setMinimumSize(QtCore.QSize(300, 40))
self.toolButton.setMaximumSize(QtCore.QSize(300, 40))
self.toolButton.setStyleSheet("background-color:#f23041;\n"
"border-radius:5px;\n"
"color:#fff;\n"
"")
self.toolButton.setObjectName("toolButton")
self.verticalLayout.addWidget(self.toolButton, 0, QtCore.Qt.AlignHCenter)
self.gridLayout.addWidget(self.verticalFrame, 0, 1, 1, 1)
self.toolButton_2.clicked.connect(self.signin)
self.toolButton.clicked.connect(self.signup)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.toolButton_2.setText(_translate("Dialog", "SignIn"))
self.toolButton.setText(_translate("Dialog", "SignUp"))
def signup(self):
email = self.lineEdit.text()
password = self.lineEdit.text()
user = auth.create_user_with_email_and_password(email, password)
user = auth.refresh(user['refreshToken'])
print('Sucessfully accounted in: {0}'.format(user['userId']))
IsUser=user['userId']
def signin(self):
email = self.lineEdit.text()
password = self.lineEdit.text()
user = auth.sign_in_with_email_and_password(email, password)
user = auth.refresh(user['refreshToken'])
print('Sucessfully logged in: {0}'.format(user['userId']))
IsUser=user['userId']
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_Dialog()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
全体のコードは私のgithubリポジトリにありますReference
この問題について(Firebase signinでGUI Pythonアプリを作成すること), 我々は、より多くの情報をここで見つけました https://dev.to/arkadeepnag/creating-a-gui-python-app-with-firebase-signin-part-1-8hbテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol