2016-11-14 11 views
2

私はhtmlのボタンをクリックしてPython関数を呼び出せます。 私はthisを試しましたが、それはテキストのためだけに機能します。そして、私はhereを見てきましたが、ボタンのために機能名を使用することができますが、機能しません。理由はわかりません:/ボタン付きのPython関数を呼び出す

そして、私はボタンをクリックした後に別のページに行きたいです。同じページにとどまり、関数からコードを実行するだけです。

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

私はすべてのヘルプは高く評価されパイソン、フラスコには本当に新しいです。

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

はこのお試しくださいWebブラウザでは動作しません知っている:

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

か、単にタグを使用します。ページのリダイレクトを回避するために

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

をこれを使用できます:

return (''), 204 
+0

最初のものは動作せず、2番目のものは私の質問で言ったようなものですが、ボタンにしたいのですが、 1:D ボタンをフォームに入れてくださいエドアクションがそこにあり、それは今、少しばかだが動作します、ありがとうございました – kemis

+0

あなたはそれをスタイルするためにCSSを使用することができます。 –

関連する問題