Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling a python function with a button

Tags:

python

flask

I want to be able to click on a button in html and call a python function. I have tried this and it works but only for text. And I have seen here that you can use the function name in action for buttons but it does not work and I dont know why :/

And I dont want after the click of the button go to to another page, I want to stay on the same page and just execute the code from the function.

my py file :

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

my html file:

<!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>

I am really new to python and flask so every help is appreciated.

EDIT: i now know that tkinter will not work in web browsers

like image 485
kemis Avatar asked Nov 14 '16 06:11

kemis


1 Answers

Try this:

<button action="{{ url_for('uploaduj') }}">Klik</button> 

or just use a tag:

<a href="{{ url_for('uploaduj') }}">Klik</a> 

To avoid page redirect, you can use this :

return (''), 204
like image 61
Grey Li Avatar answered Oct 09 '22 07:10

Grey Li