真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【python筆記】Qt+云函數(shù) 實現(xiàn)簡單的登錄框制作

【python筆記】Qt+云函數(shù) 實現(xiàn)簡單的登錄框制作

  • 備注:前置條件:QtDesigner、pycharm、PyQt5、配置好的云函數(shù)(百度的叫函數(shù)計算CFC,用來充當一個簡陋的服務器,主要是免費)

    成都創(chuàng)新互聯(lián)是專業(yè)的邵原網(wǎng)站建設(shè)公司,邵原接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行邵原網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

  • 大致思路:

    1. 點擊登錄框的時候,把username和password框的的數(shù)據(jù)打包成json發(fā)送到云函數(shù)提供的url里(云函數(shù)html觸發(fā))

    2. 在云函數(shù)里判斷用戶名和密碼,當判斷正確,則返回1,判斷假則返回0

    3. 在本地判斷返回值,返回值為1則在textbrowser里出現(xiàn)文字“登錄成功”,否則出現(xiàn)文字“登錄失敗”

  • 需要處理的問題:

    1. 登錄框和密碼框點擊的時候用多線程處理,否則點擊以后,整個界面都會卡住,要等事件完全結(jié)束以后才能操作頁面。

    解決方式:點擊登錄框的時候創(chuàng)建一個子線程,在子線程里跑按鈕的槽函數(shù)

    1. 由于是子線程跑登錄按鈕事件的槽函數(shù),發(fā)送數(shù)據(jù)包到url,接收url的返回值,都在子線程,而textbrowser是在主線程,所以涉及到進程間通信

    解決方式:要用一個自定義信號來emit的時候把返回值返回到主線程

1.用QtDesigner隨便畫一個登錄框

2.配置云函數(shù)

這個函數(shù)用來模擬服務器登錄

  1. 百度智能云 -> 產(chǎn)品 -> 云原生 -> 函數(shù)計算
  2. 創(chuàng)建函數(shù),選擇空白函數(shù),事件模式選擇event,運行時選擇python3.6,觸發(fā)器選擇HTTP觸發(fā),HTTP方法選擇全部或者POST都行,直接創(chuàng)建函數(shù)即可。
  3. 修改云函數(shù)
#用request發(fā)送一個json數(shù)據(jù)包到云函數(shù)提供的url,json數(shù)據(jù)會儲存在event參數(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
  1. python代碼
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) #激活自定義型號,傳參,參數(shù)為登錄返回值

    def run(self): #繼承QThread,重寫run函數(shù),寫個死循環(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")#加載寫好的界面
		#把每個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() #每次更新文字要重繪一下,不然會不顯示
        else:
            self.textb.setText("登錄失敗")
            self.textb.repaint()
app = QApplication(sys.argv)
w = my_window()
w.ui.show()
app.exec()

本文名稱:【python筆記】Qt+云函數(shù) 實現(xiàn)簡單的登錄框制作
文章路徑:http://weahome.cn/article/dsogjcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部