Python 将图像导入tkinter

Python 将图像导入tkinter,python,tkinter,Python,Tkinter,好的,我正在编写一个简单的图像查看器,我有足够的代码来查看这些图像,但唯一的问题是查看您想要的图像。您必须将它们放在与脚本相同的目录中并重命名它们。我希望用户能够单击类似“文件打开”,然后导入这些图像。我目前使用Tkinter作为Gui和PIL来显示图像。这是我的最新代码: from PIL import Image, ImageTk from Tkinter import Tk, Label, BOTH from ttk import Frame, Style import os import

好的,我正在编写一个简单的图像查看器,我有足够的代码来查看这些图像,但唯一的问题是查看您想要的图像。您必须将它们放在与脚本相同的目录中并重命名它们。我希望用户能够单击类似“文件打开”,然后导入这些图像。我目前使用Tkinter作为Gui和PIL来显示图像。这是我的最新代码:

from PIL import Image, ImageTk
from Tkinter import Tk, Label, BOTH
from ttk import Frame, Style
import os
import PIL
import Tkinter 

filename = "test.jpg"
filename2 = "test1.jpg"
filename3 = "test2.jpg"
filename4 = "test3.jpg"
basewidth = 300
img = Image.open(filename)
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
img.save('resize.jpg')

basewidth = 300
img = Image.open(filename2)
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
img.save('resize2.jpg')

basewidth = 300
img = Image.open(filename4)
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
img.save('resize4.jpg')
class Example(Frame):



    def __init__(self, parent):
            Frame.__init__(self, parent)   

            self.parent = parent

            self.initUI()

    def initUI(self):

            self.parent.title("Picture")
            self.pack(fill=BOTH, expand=1)

            Style().configure("TFrame", background="")

            image1 = Image.open("resize.jpg")
            bardejov = ImageTk.PhotoImage(image1)
            label1 = Label(self, image=bardejov)
            label1.image = bardejov
            label1.place(x=5, y=5)

            image2 = Image.open("resize2.jpg")
            bardejov = ImageTk.PhotoImage(image2)
            label1 = Label(self, image=bardejov)
            label1.image = bardejov
            label1.place(x=5, y=250)

            image3 = Image.open("resize3.jpg")
            bardejov = ImageTk.PhotoImage(image3)
            label1 = Label(self, image=bardejov)
            label1.image = bardejov
            label1.place(x= 350, y=5)

            image3 = Image.open("resize4.jpg")
            bardejov = ImageTk.PhotoImage(image3)
            label1 = Label(self, image=bardejov)
            label1.image = bardejov
            label1.place(x= 350, y=250)

def main():

     root = Tk()
     root.geometry("660x488")
     app = Example(root)
     root.mainloop()  

if __name__ == '__main__':
     main()  

给你-我为一个图像做,你为所有其他图像做同样的事情

import tkFileDialog
from Tkinter import *
from PIL import Image
import os

root= Tk()

def resizeIt():
    filename = tkFileDialog.askopenfilename()
    basewidth = 300
    img = Image.open(filename)
    wpercent = (basewidth / float(img.size[0]))
    hsize = int((float(img.size[1]) * float(wpercent)))
    img = img.resize((basewidth, hsize), Image.ANTIALIAS)
    img.save('resize.jpg')
    os.remove(filename) # deletes the original image after you have got the resized image


Button(text='add image', command=resizeIt).pack()

root.mainloop()
在评论中的问题后编辑

是,您可以使用
os
模块删除文件。首先在当前名称空间中导入操作系统,然后在保存大小调整后的图像后,添加一行
os.remove(filename)

我已经在上面的代码中这样做了。

给你-我为一个图像这样做,你为所有其他图像这样做

import tkFileDialog
from Tkinter import *
from PIL import Image
import os

root= Tk()

def resizeIt():
    filename = tkFileDialog.askopenfilename()
    basewidth = 300
    img = Image.open(filename)
    wpercent = (basewidth / float(img.size[0]))
    hsize = int((float(img.size[1]) * float(wpercent)))
    img = img.resize((basewidth, hsize), Image.ANTIALIAS)
    img.save('resize.jpg')
    os.remove(filename) # deletes the original image after you have got the resized image


Button(text='add image', command=resizeIt).pack()

root.mainloop()
在评论中的问题后编辑

是,您可以使用
os
模块删除文件。首先在当前名称空间中导入操作系统,然后在保存大小调整后的图像后,添加一行
os.remove(filename)

我已经在上面的代码中这样做了。

关于这个问题,您还不了解什么?您知道Tkinter有内置的文件对话框吗?或者,你知道但不知道如何使用它吗?或者你还有什么不明白的吗?我知道tkinter有一个内置的文件对话框,我花了一整天的时间试图把它弄出来,但最终我遇到了一个死胡同,在这里发布了我需要有人告诉我如何将文件对话框添加到“定义所有的img=”中来打开文件对话框。然后我就不知道如何打开它。关于这个问题,你不明白什么?您知道Tkinter有内置的文件对话框吗?或者,你知道但不知道如何使用它吗?或者你还有什么不明白的吗?我知道tkinter有一个内置的文件对话框,我花了一整天的时间试图把它弄出来,但最终我遇到了一个死胡同,在这里发布了我需要有人告诉我如何将文件对话框添加到“定义所有的img=”中来打开文件对话框。然后我就不知道如何打开它了。在你选择了四幅图像后,出现了一些问题。你必须单击x来打开它。我如何添加一个文本来告诉用户这样做,或者你有一个修复方法吗?谢谢。你可以在一个对话框中只选择一幅图像。从“文件”对话框中选择单个图像,然后单击“打开”。就这样。您将在保存此python脚本的同一位置获得一个名为resize.jpg的图像。我是否必须使用按钮四次,因为我重复了四次,但都在def rezimg下,然后根据您的需要使用按钮(ect)。如果有4个按钮,请为每个方法添加4个新命令,如resizeIt1到resizeIt4,并小心使用不同的名称保存每个命令。最重要的是阅读一些关于python和/或Tkinteri的书我已经学习了python我在学习Tkine的过程中的艰难之路wierd在你选择了四个图像后会发生什么事情你必须点击x打开它我如何添加一个文本来告诉用户这样做,或者你有一个修复方法吗对话从“文件”对话框中选择单个图像,然后单击“打开”。就这样。您将在保存此python脚本的同一位置获得一个名为resize.jpg的图像。我是否必须使用按钮四次,因为我重复了四次,但都在def rezimg下,然后根据您的需要使用按钮(ect)。如果有4个按钮,请为每个方法添加4个新命令,如resizeIt1到resizeIt4,并小心使用不同的名称保存每个命令。最重要的是读一些关于python和/或Tkinteri的书。我在学习tkiner的过程中经历了学习python的艰辛历程