十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
備注:前置條件:QtDesigner、pycharm、PyQt5、配置好的云函數(shù)(百度的叫函數(shù)計(jì)算CFC,用來充當(dāng)一個(gè)簡陋的服務(wù)器,主要是免費(fèi))

成都創(chuàng)新互聯(lián)是專業(yè)的邵原網(wǎng)站建設(shè)公司,邵原接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行邵原網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
大致思路:
點(diǎn)擊登錄框的時(shí)候,把username和password框的的數(shù)據(jù)打包成json發(fā)送到云函數(shù)提供的url里(云函數(shù)html觸發(fā))
在云函數(shù)里判斷用戶名和密碼,當(dāng)判斷正確,則返回1,判斷假則返回0
在本地判斷返回值,返回值為1則在textbrowser里出現(xiàn)文字“登錄成功”,否則出現(xiàn)文字“登錄失敗”
需要處理的問題:
解決方式:點(diǎn)擊登錄框的時(shí)候創(chuàng)建一個(gè)子線程,在子線程里跑按鈕的槽函數(shù)
解決方式:要用一個(gè)自定義信號(hào)來emit的時(shí)候把返回值返回到主線程
這個(gè)函數(shù)用來模擬服務(wù)器登錄
#用request發(fā)送一個(gè)json數(shù)據(jù)包到云函數(shù)提供的url,json數(shù)據(jù)會(huì)儲(chǔ)存在event參數(shù)里,這里把用戶名、密碼寫死了,#其實(shí)是可以連接數(shù)據(jù)庫的,在數(shù)據(jù)庫里查詢
import json
def handler(event, context):
username = json.loads(event.get("body")).get("username")
password = json.loads(event.get("body")).get("password")
if(username == "admin")&(password == "wdnmd"):
ret = 1
else:
ret = 0
return ret
import sys
import time
import json
import requests
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import *
from PyQt5 import uic
class login_thread(QThread):
start_login_signal = pyqtSignal(str) #用來把url返回的值從子線程提交到主線程
def __init__(self,signal):
super().__init__()
self.signal1 = signal
def login_request(self,json_data):
num="0"
json_data1 = json.loads(json_data)
resp = requests.post(url="https://2729mj3a1p6k3.cfc-execute.bj.baidubce.com/loginfunc",json=json_data1)
resp.close()
num = resp.text
self.signal1.emit(num) #激活自定義型號(hào),傳參,參數(shù)為登錄返回值
def run(self): #繼承QThread,重寫run函數(shù),寫個(gè)死循環(huán)防止線程死亡
while(1):
time.sleep(1)
class my_window(QWidget):
login_status=pyqtSignal(str)
def __init__(self):
super().__init__()
self.init()
def init(self):
self.ui = uic.loadUi("login.ui")#加載寫好的界面
#把每個(gè)ui文件里的按鈕綁定起來
self.account_edit = self.ui.lineEdit
self.password_edit = self.ui.lineEdit_2
self.login_button = self.ui.pushButton
self.register_button = self.ui.pushButton_2
self.textb = self.ui.textBrowser
self.login_button.clicked.connect(self.login)
self.login_status.connect(self.status) #綁定槽函數(shù)
self.thread = login_thread(self.login_status)
self.thread.start_login_signal.connect(self.thread.login_request) #綁定槽函數(shù)
self.thread.start()
def login(self):
username = self.account_edit.text()
password = self.password_edit.text()
self.thread.start_login_signal.emit(json.dumps({"username":username,"password":password}))
def status(self,status): #通過返回值判斷登錄狀態(tài),設(shè)置textbrowser里的文字
if status=='1':
self.textb.setText("登錄成功")
self.textb.repaint() #每次更新文字要重繪一下,不然會(huì)不顯示
else:
self.textb.setText("登錄失敗")
self.textb.repaint()
app = QApplication(sys.argv)
w = my_window()
w.ui.show()
app.exec()