Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用flask在网页中运行一个使用tkinter的python程序?_Python_Python 3.x_Django_Flask_Tkinter - Fatal编程技术网

是否可以使用flask在网页中运行一个使用tkinter的python程序?

是否可以使用flask在网页中运行一个使用tkinter的python程序?,python,python-3.x,django,flask,tkinter,Python,Python 3.x,Django,Flask,Tkinter,我有一个python程序,我想在web服务器中使用。为此,我需要将其转换为web环境。我听说你可以用烧瓶来做。挑战在于程序是用tkinter制作的GUI。如果我通过cmd:flask运行以下程序,它将在本地主机中运行。如果复制地址并将其放在web浏览器中,我会在web窗口中获得错误Internal Server error,但会在我的计算机中打开一个带有复选按钮和标签的新窗口。该计划有效;我需要的是将带有复选按钮和标签的窗口放在web窗口中,以便最终将其放在服务器上。我有数百个widget,用于

我有一个python程序,我想在web服务器中使用。为此,我需要将其转换为web环境。我听说你可以用烧瓶来做。挑战在于程序是用tkinter制作的GUI。如果我通过cmd:flask运行以下程序,它将在本地主机中运行。如果复制地址并将其放在web浏览器中,我会在web窗口中获得错误Internal Server error,但会在我的计算机中打开一个带有复选按钮和标签的新窗口。该计划有效;我需要的是将带有复选按钮和标签的窗口放在web窗口中,以便最终将其放在服务器上。我有数百个widget,用于我被迫使用place.method的东西,我不想用另一种语言从头开始编写所有东西。有什么办法吗

from flask import Flask
from tkinter import *
app = Flask(__name__)

@app.route("/")
def hello():

    root = Tk()

    out = Label(root, text="0", bg="red")

    def out_result():
        out.configure(text="button pressed")

    button1 = Checkbutton(root, command=out_result)

    button1.place(x=20, y=20)
    out.place(x=50, y=20)

    root.mainloop()

不,您不能通过flask应用程序运行tkinter程序。Tkinter应用程序需要物理显示器或模拟物理显示器。这在文字上并不是不可能的——我知道至少有一个网站可以让你在浏览器中运行tkinter代码——但我相信重写代码比在浏览器中运行要容易得多


TL;DR:虽然不是完全不可能,但它不会开箱即用。

这根本不是Tkinter所做的。要在web上显示GUI,您需要将其表示为HTML,可能还需要一些JavaScript。请从中重复和。“演示如何解决此编码问题”不是堆栈溢出问题。你必须做出诚实的尝试,然后问一个关于你的算法或技术的具体问题。有什么办法吗?是一个系统设计问题,对这个网站来说太宽泛了。你需要研究将应用程序部署到web上的方法。我认为我的问题并不广泛,因为我只想知道是否可以使用flask将带有tkinter GUI的python程序转换为web窗口。显然,正如@jasonharper所证实的,答案是简单的“不”。我不明白这个问题有多广泛