2016-11-14 4 views
2

Я хочу, чтобы иметь возможность щелкнуть по кнопке в html и вызвать функцию python. Я пробовал this, и он работает, но только для текста. И я видел here, что вы можете использовать имя функции в действии для кнопок, но это не работает, и я не знаю, почему:/Вызов функции python с помощью кнопки

И я не хочу, чтобы после нажатия кнопки перейти на другую страницу, я хочу оставаться на одной странице и просто выполнять код из функции.

мой файл пй:

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 и колба поэтому каждая помощь приветствуется.

EDIT: я теперь знаю, что Tkinter не будет работать в веб-браузерах

+0

Вы не можете открыть окна Tkinter в браузере, вы можете? –

+0

Я могу, эта часть отлично работает – kemis

+1

Действительно? Похоже, вы заставляете сервер открывать диалоговое окно файла. Это не должно работать, если сервер находится на другом компьютере. –

ответ

1

Вам нужен диалог ввода HTML-файла.

<form action="/upload"> 
    <input type="file" name="fileupload" value="fileupload" id="fileupload"> 
    <label for="fileupload"> Select a file to upload</label> 
    <input type="submit" value="Klik"> 
</form> 

Как вы справляетесь, что в термос, is in the documentation

+0

спасибо, я буду исследовать это :) – kemis

2

Попробуйте это:

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

или просто использовать тег:

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

Чтобы избежать страницы редирект , вы можете использовать это:

return (''), 204 
+0

Первый не работает, а второй - тот, который я сказал в моем вопросе, который работал, но я хочу, чтобы это была кнопка. Редирект работает так, 1: D Я положил кнопку в форму и нас ed action, и он работает сейчас, немного глупо, но работает, спасибо – kemis

+0

Вы можете использовать CSS для его стилизации. –

Смежные вопросы