gpt4 book ai didi

python - Flask 桌面应用程序文件选择器

转载 作者:行者123 更新时间:2023-11-28 17:41:18 25 4
gpt4 key购买 nike

我正在尝试使用 Flask 为桌面应用程序构建 GUI(即在本地运行的服务器上运行的 Web 应用程序与嵌入式浏览器捆绑在一起)。现在大部分事情似乎都可以工作,但我想添加一个文件选择器以允许用户在他们的计算机上选择一个目录。我需要目录的完整路径,因此无法使用 HTML/JavaScript 打开对话框(由于安全限制)。

我尝试做的是在页面上按下按钮时启动 Tkinter 文件对话框。问题是,虽然它确实启动了一些东西,但进程只是卡住(不显示窗口),我被迫终止它,之后页面重定向到“/view_1_actions”,我得到一个“错误代码:ERR_EMPTY_RESPONSE "错误(即 Flask 应用程序仅在我关闭看似对话窗口的内容后才崩溃)。

这是我的代码:

HTML:

<form action="/view_1_actions" method="post">
<input type="submit" name="submit" value="Select"></input>
</form>

python :

from flask import Flask, request, redirect
from Tkinter import Tk
from tkFileDialog import askdirectory

@app.route('/view_1_actions', methods = ['POST'])
def view_1_actions():
if request.form['submit'] == 'Select':
Tk().withdraw()
dirname = askdirectory()
return redirect('/')

承认这是一个相当奇怪的场景,因为您通常不会在“服务器端”启动图形界面,但我的问题是是否有办法解决这个问题或我可以用来显示文件的替代解决方案选择器对话框(最好是每个操作系统的 native 对话框)。

最佳答案

虽然我不确定进程是否卡住(也许 Tk 和您用来绘制 webview 的库之间存在冲突?)但用户可以无限期地延迟 View 函数的响应是一个潜在的问题(理论上一直在“使用” View )。

我建议让 flask View 函数启动一个单独的线程/发送消息,然后立即返回。 (无论你想要对话框背后的背景是什么。)另一个线程负责以 native 操作系统方式处理对话框窗口,然后当用户选择某些东西并完成时,在内部发送另一个 flask 请求,它将做任何它需要做的事情与选定的文件。

我以前从来没有在桌面应用程序中这样做过,但是我喜欢这样处理服务器上长时间运行的任务.

关于python - Flask 桌面应用程序文件选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23775211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com