我的桌面上有一个用Python编写的独立应用程序。我在我的应用程序中使用了像Tkinter,cv2,numpy这样的模块。我的Tkinter渲染我的GUI(有一个按钮和一个图像)。现在我的问题是我想把它变成一个Web应用程序。为此,我使用Django框架,要求分离模型,视图和模板(MTV)。如何使用HTML使用相同的按钮和图像渲染相同的GUI。 (我的GUI有按钮和图像应该在模板中,而我的业务逻辑应该在View中。)这是我要转换为MTV表单的代码段。我希望上传按钮位于模板(HTML)中。单击上传按钮,程序应转到视图(逻辑)。如何隔离逻辑和HTML? (它是否有必要?我可以将整个事物转换为Django框架而不会分离) 请帮助。
def upload():
global original_img,img,img2,img3,image_path,old_label_image,photo,label,image_path,image,ax,fig
print "upload"
image_path=tkFileDialog.askopenfilename()
image = Image.open(image_path)
original_img= image.copy()
image.thumbnail((1000,625))
photo = ImageTk.PhotoImage(image)
label = Label(image=photo)
label.image = photo
if old_label_image is not None:
old_label_image.destroy()
old_label_image = label
#label.update()
label.pack()
root = Tk.Tk() # creating an instance of Tk class
print "main"
old_label_image = None
frame = Frame(root) #creates a new window (given by the pathName argument) and makes it into a frame widget.The frame command returns the path name of the new window.
frame.pack() #The Pack geometry manager packs widgets in rows or columns
bottomframe = Frame(root)
bottomframe.pack( side = BOTTOM )
UploadButton = Button(frame, text="Upload", command= upload)
UploadButton.pack( side = LEFT)
root.mainloop()
答案 0 :(得分:2)
你不能。以下是那些想要了解的人的理由:
第一 - Python代码由它的解释器执行,这是一个用C语言编写的程序。(Python软件基金会'解释器被正确调用" Cpython&# 34;区别于第三方也可以运行Python代码的解释器。 Python代码由Cpython解释,它将它的内容显示在python控制台中,例如" Idle"或者"终端仿真器"或者甚至直接在计算机窗口的屏幕上作为图形,使用" X11" [X Windows for Linux Unix]," Quartz Compositor MacX" [Macintosh],[或" DWM" [Destop Windows Manager for Windows]。 (Cpython有3个基本版本,每个版本分别用于Mac,Windows和Unix / Linux)
第二 - 您还可以将Web浏览器视为程序解释程序。但它无法解释Python代码。所有他们都知道如何解释是HTML,CSS和Javascript。但是,Web浏览器不是被送到第三方控制台或计算机窗口系统,而是像虚拟机一样解释并在其自己的显示环境(Web浏览器)中显示结果。不幸的是,这些浏览器都没有被编程来解释Python代码。
3rd - Python是一种非常高级的语言,这意味着它是由较低级别的语言设计的。在有Python之前必须有C.在有C之前必须有汇编。在有大会之前,必须有机器语言。计算机代码以一种可以与生物学相比较的方式发展。 Javascript也非常高度发展,但它的演变完全依赖于Web浏览器。 Python的演变取决于终端仿真器和计算机的窗口系统[X11,MacX或DWM]
答案 1 :(得分:1)
你不能"转换"像这样的代码。为Web编写应用程序与为桌面框架编写应用程序完全不同。您需要考虑如何以HTML格式呈现表单,如何接受上传的文件,如何向用户呈现响应等等。 Django具有所有这些功能,但它是一种完全不同的做事方式:首先,表单的初始表示和响应的返回将在单独的请求中完成,它们之间没有持久性。