Flask + PyInstaller = 客户端

有些特殊情况需要开发客户端,Python有几个常用的几个GUI框架,如 PyQt、wxPython等

但使用这些GUI框架往往界面比较丑,而且GUI的线程问题处理起来比较麻烦,界面主线程无法回调,做个倒计时之类的东西都麻烦

不如直接前后端分离,使用flask做客户端的服务,html写页面,使用pyinstaller打包成exe,这样可以在任何windows电脑点击exe打开使用

安装依赖

pip install flask pyinstaller

文件结构

  • root

    • templates

      • hello.html
    • application.py

代码

application.py

import webbrowser
from flask import Flask, render_template app = Flask(__name__) @app.route("/")
def hello_world():
return render_template('hello.html') if __name__ == '__main__':
webbrowser.open('http://localhost:15000')
app.run(host='localhost', port=15000)

templates/hello.html

<!doctype html>
<html> <head>
<title>演示客户端</title>
</head> <body>
<h1>演示</h1>
<p>演示如何使用Flask + PyInstaller制作客户端</p>
</body> </html>

打包

pyinstaller application.py --add-data=templates;templates --name=demo

执行后,将在项目目录下生产 dist/demo 目录,双击 dist/demo/demo.exe 即可打开客户端

  • 也可使用python调用pyinstaller,运行下面这段代码和上面的打包命令一样的效果
from PyInstaller.__main__ import run

if __name__ == '__main__':
opts = ['application.py', '--add-data=templates;templates', '--name=demo']
run(opts)

Flask + PyInstaller = 客户端的更多相关文章

  1. 转载 Flask中客户端 - 服务器 - web应用程序 是如何处理request生成response的?

    文章转载自https://blog.csdn.net/weixin_37923128/article/details/80992645 , 感谢原作者 当客户端向服务器发送一个请求时,服务器会将请求转 ...

  2. flask客户端测试使用设置cookie参数

    今天在对flask客户端进行测试,然后看到我们服务器端用请求前钩子写了这样的代码 @app.before_requestdef before_request(): session = request. ...

  3. Flask 学习 十四 测试

    获取代码覆盖报告 安装代码覆盖工具 pip install coverage manage.py 覆盖检测 COV = None if os.environ.get('FLASK_COVERAGE') ...

  4. Flask从入门到精通之flask程序入门

    初始化 所有Flask程序都必须创建一个程序实例,Web服务器使用一种名为Web服务器网关接口的的协议(WSGI),把接收自客户端的所有请求转发给这个对象处理.程序实例是Flask类的对象,使用下面代 ...

  5. Django和Flask的区别以及运行流程

    Django: Python Web框架里比较有名当属Django,Django功能全面,它提供一站式解决方案,集成了MVT(Model-View-Template)和ORM,以及后台管理.但是缺点也 ...

  6. flask 之(二) --- 视图|模版|模型

    Flask框架 打开pycharm编译器,新建一个Flask项目,选择提前建好的虚拟环境 . 项目结构: static:静态资源文件,可以直接被浏览器访问 templates:模版文件,必须在项目的p ...

  7. flask的请求上下文request对象

    Flask从客户端收到请求时,要让视图函数能访问请求对象request ,才能处理请求.我们可以将request对象作为参数传到试图函数里,比如: from flask import Flask, r ...

  8. Flask - 上下文管理(核心)

    参考 http://flask.pocoo.org/docs/1.0/advanced_foreword/#thread-locals-in-flask https://zhuanlan.zhihu. ...

  9. Flask 上下文机制和线程隔离

    1. 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决, 上下文机制就是这句话的体现. 2. 如果一次封装解决不了问题,那就再来一次 上下文:相当于一个容器,保存了Flask程序运行过程中 ...

  10. [Python] Flask从0到1开发轻量级网页

    概述 Flask采用MVT模型,即Model, Template, View Model:定义数据的存储格式,并且提供了数据库访问的API View:定义那些数据被显示,是业务逻辑处理模块 Templ ...

随机推荐

  1. YMOI 2019.6.29

    题解 YMOI 2019.6.29 放弃FAIOJ,用cena考了一次试.被全方位吊打.. T1 开灯 题面: 在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,--. 每一盏灯只有两种可 ...

  2. 基于WebSocket的实时消息传递设计

    目录 概述 整体架构 设计 流程设计 程序设计 WebSocketServer 概述 新增pom 新增配置类 创建websocket端点 WebSocketClient 概述 安装WebSocketS ...

  3. Odoo View 常用技巧

    隐藏Field <field name="currency_id" invisible="True"/> <field name=" ...

  4. JSP第五次作业

    1.教材P78-79  例4-9 1 <%@ page language="java" import="java.util.*" pageEncoding ...

  5. Selenium中对于颜色的处理及拓展

    Selenium中对于颜色的处理及拓展 获取百度一下按钮的背景色 from selenium import webdriver from time import sleep driver = webd ...

  6. VUE防止多次点击,重复请求

    1.添加自定义文件 preventReClick.js import Vue from 'vue' const preventReClick = Vue.directive('preventReCli ...

  7. WSL 配置输入法

    安装输入法 sudo apt install dbus-x11 im-config fonts-noto fcitx fcitx-pinyin fcitx-sunpinyin fitx-googlep ...

  8. C#通过OLEDB将DataTable写入Excel文件中

    利用OLEDB将DataTable数据写入Excel文件中,如果数据量过多,执行效率很缓慢,大数据量不推荐使用此方法. /// <summary> /// 创建DataTable /// ...

  9. C++并发-互斥元

    1.std::mutex类 1.构造函数,std::mutex不允许拷贝构造,也不允许 move 拷贝,最初产生的 mutex 对象是处于 unlocked 状态的. 2.lock(),调用线程将锁住 ...

  10. 30道四则运算java

    package test4; import java.util.Scanner;import java.util.Random;public class Test4 { public static v ...