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

  • 备注:前置条件:QtDesigner、pycharm、PyQt5、配置好的云函数(百度的叫函数计算CFC,用来充当一个简陋的服务器,主要是免费)

  • 大致思路:

    1. 点击登录框的时候,把username和password框的的数据打包成json发送到云函数提供的url里(云函数html触发)

    2. 在云函数里判断用户名和密码,当判断正确,则返回1,判断假则返回0

    3. 在本地判断返回值,返回值为1则在textbrowser里出现文字“登录成功”,否则出现文字“登录失败”

  • 需要处理的问题:

    1. 登录框和密码框点击的时候用多线程处理,否则点击以后,整个界面都会卡住,要等事件完全结束以后才能操作页面。

    解决方式:点击登录框的时候创建一个子线程,在子线程里跑按钮的槽函数

    1. 由于是子线程跑登录按钮事件的槽函数,发送数据包到url,接收url的返回值,都在子线程,而textbrowser是在主线程,所以涉及到进程间通信

    解决方式:要用一个自定义信号来emit的时候把返回值返回到主线程

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

2.配置云函数

这个函数用来模拟服务器登录

  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()

【python笔记】Qt+云函数 实现简单的登录框制作的更多相关文章

  1. python笔记:#012#函数

    函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...

  2. Python笔记·第九章—— 函数 (一)

    一.函数的作用 函数可以让我们代码结构更清晰,而且避免了代码的重复,冗余,使一段代码或者功能可以反复的被调用,大大提高了开发效率 二.函数的定义 def 函数名(参数1,参数2,*args,默认参数, ...

  3. Python笔记-高阶函数

    1.函数式编程 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 传入函数 既然 ...

  4. python笔记21-内置函数

    # print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真# print(any([0,0,0,0,0]))#判断可迭代的对象里面的值是否有一个为真# print(bin(10 ...

  5. guxh的python笔记二:函数基础

    1,函数的参数 1.1,查看函数的参数类型 def run(a, *args, b, **kwargs): return a + b 可以通过如下方式查看参数类型: import inspect k ...

  6. python笔记之强制函数以关键字参数传参

    最近学习python,学到了函数传参,看到了以下这个特殊情况,特此来做个笔记 def add(*, x, y): print(x, y) 以上函数定义后,该怎么传参?前面的那个*号是做什么用的? 我们 ...

  7. python笔记-调用eval函数出现invalid syntax错误

    本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...

  8. python笔记六(函数的参数、返回值)

    一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...

  9. python笔记-正则表达式常用函数

    1.re.findall()函数 语法:re.findall(pattern,string,flags=0) --> list(列表) 列出字符串中模式的所有匹配项,并作为一个列表返回.如果无匹 ...

随机推荐

  1. 双列集合Map接口 & Collections工具类

    HashMap 常用方法 遍历方式 iterator迭代器  ITIT HashTable 继承字典 Hashtable--Properties 文件读写 总结 Collections工具类

  2. 设置Linux系统的交叉编译环境

    1.在Linaro官网上获得交叉编译工具 网址:http://releases.linaro.org/components/toolchain/gcc-linaro/ 从Linaro官网上能找到4.9 ...

  3. grafana v8.0+ 隐藏表格字段

    Select panel title → Inspect → Panel JSON Set "type" to "table-old" Apply The vi ...

  4. form表单,css简介,css选择器,css样式操作

    form表单 简介 表单在Web网页中用以让访问者输入数据,当提交表单时,表单中输入的数据被打包传递给Web服务器端的程序 以处理,从而使得Web服务器与用户之间具有交互功能. 表单实现前后台交互:用 ...

  5. drools规则属性(rule attributes)的使用

    一.介绍 规则属性是您可以添加到业务规则以修改规则行为的附加规范. 在 DRL 文件中,您通常在规则条件和操作的上方定义规则属性,多个属性位于单独的行中,格式如下: rule "rule_n ...

  6. Cubieboard安装系统

    2013年买的一个小玩意. 一.硬件 1.1 相关资料 http://www.cubieforums.com http://cubie.cc 1.2 cubieboard1 1.3 无线网卡 水星 M ...

  7. 将汇总结果导出到MySQL

    ①mysql建表test1 ②cd /opt/module/sqoop进入scoop路径 ③ bin/sqoop export \ > --connect jdbc:mysql://master ...

  8. 安装Speedtest到CentOS(YUM)

    Speedtest是一个由Python语言编写的一个网络测速脚本,提供多个外网的测试站点,我们可以使用它测试网络的IO速度. 如果由于网络问题导致无法下载软件包,则可以通过安装模块到Python的方式 ...

  9. IDEA找不到类但实际存在的问题解决

    不知道某天开始Idea就开始抽风了. 现象: 一个service的接口类,就在同一个包下,但总是找不到,编辑器一直标红 编译可以通过 说明类本身应该是没什么问题的.问题是怎么重新编译重新reload ...

  10. 管理订单状态,该上状态机吗?轻量级状态机COLA StateMachine保姆级入门教程

    前言 在平常的后端项目开发中,状态机模式的使用其实没有大家想象中那么常见,笔者之前由于不在电商领域工作,很少在业务代码中用状态机来管理各种状态,一般都是手动get/set状态值.去年笔者进入了电商领域 ...