【python笔记】Qt+云函数 实现简单的登录框制作

python笔记】Qt+云函数 实现简单的登录框制作

  • 备注:前置条件:QtDesigner、pycharm、PyQt5、配置好的云函数(百度的叫函数计算CFC,用来充当一个简陋的服务器,主要是免费)
  • 大致思路:
  • 点击登录框的时候,把username和password框的的数据打包成json发送到云函数提供的url里(云函数html触发)
  • 在云函数里判断用户名和密码,当判断正确,则返回1,判断假则返回0
  • 在本地判断返回值,返回值为1则在textbrowser里出现文字”登录成功”,否则出现文字”登录失败”
  • 需要处理的问题:
  • 登录框和密码框点击的时候用多线程处理,否则点击以后,整个界面都会卡住,要等事件完全结束以后才能操作页面。 解决方式:点击登录框的时候创建一个子线程,在子线程里跑按钮的槽函数
  • 由于是子线程跑登录按钮事件的槽函数,发送数据包到url,接收url的返回值,都在子线程,而textbrowser是在主线程,所以涉及到进程间通信 解决方式:要用一个自定义信号来emit的时候把返回值返回到主线程

1.用QtDesigner随便画一个登录框

【python笔记】Qt+云函数 实现简单的登录框制作

2.配置云函数

此函数用于模拟服务器登录

[En]

This function is used to simulate server login

  1. 百度智能云 -> 产品 -> 云原生 -> 函数计算
  2. 创建函数,选择空白函数,事件模式选择event,运行时选择python3.6,触发器选择HTTP触发,HTTP方法选择全部或者POST都行,直接创建函数即可。
  3. 修改云函数
#用request发送一个json数据包到云函数提供的url,json数据会储存在event参数里,这里把用户名、密码写死了,#其实是可以连接数据库的,在数据库里查询
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) #激活自定义型号,传参,参数为登录返回值

    def run(self): #继承QThread,重写run函数,写个死循环防止线程死亡
        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) #绑定槽函数
        self.thread = login_thread(self.login_status)
        self.thread.start_login_signal.connect(self.thread.login_request) #绑定槽函数
        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): #通过返回值判断登录状态,设置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()

Original: https://www.cnblogs.com/water-wells/p/16393291.html
Author: 水风井
Title: 【python笔记】Qt+云函数 实现简单的登录框制作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499313/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 用Excel将中文转成大驼峰拼音

    示例: 1333-为适应大批量资产的录入 -> 1333-WeiShiYingDaPiLiangZiChanDeLuRu vbnet;gutter:true;getpy方法需…

    Python 2023年6月3日
    0129
  • 编译器优化丨Cache优化

    摘要:本文重点介绍几种通过优化Cache使用提高程序性能的方法。 软件开发人员往往期望计算机硬件拥有无限容量、零访问延迟、无限带宽以及便宜的内存,但是现实却是内存容量越大,相应的访…

    Python 2023年10月13日
    075
  • 别被chatGPT戏弄了

    官方的介绍是,这一模型可以与人类进行谈话般的交互,可以回答追问,连续性的问题,承认其回答中的错误,指出人类提问时的不正确前提,拒绝回答不适当的问题。 科学愉快地玩耍了一下 不设限的…

    Python 2023年11月4日
    0104
  • 轻量级bug管理平台——注册

    虚拟环境配置(略)’ 3、本地配置: local_settings.py 4、代码仓库(码云) day02 1、内容回顾: local_settings的作用? 本地配…

    Python 2023年6月12日
    0126
  • Python使用Sqlalchemy连接数据库

    一、简介 SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM(对象关系映射)工具,使用MIT许可证发行。 SQLAlchemy最初在200…

    Python 2023年8月6日
    0102
  • 猿创征文 | 国产数据库TiDB架构特性

    前言 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Ana…

    Python 2023年9月28日
    076
  • 利用Python绘制萌萌哒的皮卡丘

    开发工具 Python版本:3.6.4 相关模块: turtle模块。 环境搭建 安装Python并添加到环境变量即可。 在cmd窗口运行”pikachu.py&#82…

    Python 2023年9月23日
    096
  • dataframe数据分析常用操作汇总

    dataframe的常用操作汇总 目录1.建 12.读 23.存 24.阅 25.取 26.改 47.增 48.删 59.并 510.序 7 1.建 创建只有一列的数据框 df =…

    Python 2023年8月17日
    098
  • 深度学习环境搭建:Pytorch与CUDA的安装

    目录 什么是CUDA 查看本地显卡驱动对应CUDA版本号 安装Pytorch如何选择CUDA的版本 安装CUDA11.3 安装Pytorch 参考 什么是CUDA 统一计算设备架构…

    Python 2023年8月2日
    0143
  • Python图像锐化及边缘检测(Roberts、Prewitt、Sobel、Lapllacian、Canny、LOG)

    目录 图像锐化概述 算法方法介绍 代码实现 效果展示 图像锐化概述 图像锐化 _(image sharpening)_是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清…

    Python 2023年8月1日
    0196
  • pytorch 、numpy杂记

    1、torch. matmul()就是简&amp…

    Python 2023年8月27日
    0105
  • yolov5-6.0/6.1加入SE、CBAM、CA注意力机制(理论及代码)

    自从yolov5-5.0加入se、cbam、eca、ca发布后,反响不错,也经常会有同学跑过来私信我能不能出一期6.0版本加入注意力的博客。个人认为是没有必要专门写一篇来讲,因为步…

    Python 2023年10月8日
    0105
  • Python 工匠:使用数字与字符串的技巧

    这是 “Python 工匠”系列的第 3 篇文章。数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础。在 Python 里有三种数…

    Python 2023年5月24日
    0105
  • python绘图——坐标轴

    1. 2D坐标轴 1.1 绘制简单的曲线 import matplotlib.pyplot as plt import numpy as np x=np.linspace(-1,1…

    Python 2023年8月1日
    0189
  • 数据库如何加密连接

    文章目录 * – 1. 前言 – 2. 如何加密? – 3. 使用Druid实现加密 – 4. 生成密文 – 5. 添加…

    Python 2023年11月5日
    087
  • LabVIEW如何减少下一代测试系统中的硬件过时 1

    LabVIEW如何减少下一代测试系统中的硬件过时 1 许多测试系统的问题是,整个系统运行的时间必须超过单个系统组件的支持时间。有时被测试的设备有几十年的有效使用寿命,而许多测试仪器…

    Python 2023年9月27日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球