【发布时间】:2017-03-27 18:31:18
【问题描述】:
我希望能够单击 html 中的按钮并调用 python 函数。 我已经尝试过this,它有效,但仅适用于文本。我已经看到here 你可以在按钮上使用函数名,但它不起作用,我不知道为什么:/
而且我不想在单击按钮后转到另一个页面,我想留在同一页面上,只执行函数中的代码。
我的 py 文件:
from flask import Flask
from flask import render_template
import tkinter as tk
from tkinter import filedialog
import sys
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('hello.html')
@app.route('/upload/')
def uploaduj():
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
return file_path
我的 html 文件:
<!doctype html>
<title>Flaskr</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
<h1>Flaskr</h1>
<div class=metanav>
<button action="/upload/">Klik</button>
</div>
我对 python 和烧瓶真的很陌生,所以每一个帮助都非常感谢。
编辑:我现在知道 tkinter 不能在网络浏览器中运行
【问题讨论】:
-
你不能在浏览器中打开 tkinter 窗口,对吗?
-
我可以,那部分效果很好
-
真的吗?看起来您正在让服务器打开一个文件对话框。如果服务器在另一台计算机上,这应该不起作用
-
使用
<input type='file'>。 Tk 是一个 GUI 库。即使你让它工作,它也不会成为浏览器的一部分。 -
@MilosRadosavljevic TkInter 不是 Web UI 库。它不适用于 Web 应用程序。它可能看起来适用于您的情况,但实际上它永远不会适用于 Web 应用程序。此外,
action是您尝试附加到button的自定义属性,因为button元素没有action属性。