【问题标题】:How can I upload the selected image into the label with using python tkinter?如何使用 python tkinter 将所选图像上传到标签中?
【发布时间】:2021-01-01 17:07:56
【问题描述】:

我无法将图片上传到标签中,我尝试了很多方法,但总是出错。我该如何解决? 我可以打开文件,我可以选择图像,但我无法在标签上显示它

def openImageFile():
    global imPath
    imPath = filedialog.askopenfilename(initialdir="C:\\", title = "Open an image", filetypes = (("PNG file","*.png"), ("JPEG File","*.jpeg"), ("JPG File","*.jpg"), ("All File Types","*.*")) )
    return True


def myApp(appName:str, WIDTH:int, HEIGHT:int):
    
    appWin = tk.Tk()
    appWin.title(appName)
    
    appWin.geometry(str(WIDTH)+'x'+str(HEIGHT))
    
    #FRAME
    myFrame = tk.Frame(master = appWin, bg='light gray')
    myFrame.place(relwidth = 0.98, relheight= 0.28, relx = 0.01 ,rely=0.01)
    

    btnUploadImage = tk.Button(myFrame, text="Upload Image", command = lambda: openImageFile() )
    #Butonun uygulama ekranina eklenmesi
    btnUploadImage.place(x=300,y=160)
    
    img=ImageTk.PhotoImage(Image.open(imPath))
    
    #LABEL
    firstName = tk.Label(appWin, bg='light gray', text="First Name").place(x=10,y=40)
    middleName = tk.Label(appWin, bg='light gray', text="Middle Name").place(x=10,y=70)
    surname = tk.Label(appWin, bg='light gray', text="Surname").place(x=10,y=100)
    dateOfBirth = tk.Label(appWin, bg='light gray', text="Date of Birth").place(x=10,y=130)
    photo=tk.Label(appWin, image=img).place(relwidth=0.30,relheight=0.15,x=250,y=40)

【问题讨论】:

    标签: python image tkinter


    【解决方案1】:

    你做错了很多事情。首先,place 方法返回None,所以分配给变量没有效果,所以 photo=tk.Label (appWin, image=img).place(relwidth=0.30,relheight=0.15,x=250,y=40) 应该是

    photo=tk.Label(appWin, image=img)
    photo.place(relwidth=0.30,relheight=0.15,x=250,y=40)
    

    在两个单独的行中。其他变量也类似。

    要在上传时在Label 小部件上显示图像,请使用configure 方法。

    还将img=ImageTk.PhotoImage(Image.open(imPath)) 放在openImageFile function 中,因为在按下按钮之前未定义imPath。

    以下是更正后的代码:

    import tkinter as tk
    from PIL import ImageTk, Image
    from tkinter import filedialog
    
    def openImageFile():
        global img, photo
        imPath = filedialog.askopenfilename(initialdir="C:\\", title = "Open an image", filetypes = (("PNG file","*.png"), ("JPEG File","*.jpeg"), ("JPG File","*.jpg"), ("All File Types","*.*")) )
    
        if imPath:
            img=ImageTk.PhotoImage(Image.open(imPath))
            photo.configure(image=img)
    
    def myApp(appName:str, WIDTH:int, HEIGHT:int):
        global photo
        appWin = tk.Tk()
        appWin.title(appName)
        
        appWin.geometry(str(WIDTH)+'x'+str(HEIGHT))
        
        #FRAME
        myFrame = tk.Frame(master = appWin, bg='light gray')
        myFrame.place(relwidth = 0.98, relheight= 0.28, relx = 0.01 ,rely=0.01)
        
    
        btnUploadImage = tk.Button(myFrame, text="Upload Image", command = openImageFile)
        #Butonun uygulama ekranina eklenmesi
        btnUploadImage.place(x=300,y=160)
    
        #LABEL
        firstName = tk.Label(appWin, bg='light gray', text="First Name").place(x=10,y=40)
        middleName = tk.Label(appWin, bg='light gray', text="Middle Name").place(x=10,y=70)
        surname = tk.Label(appWin, bg='light gray', text="Surname").place(x=10,y=100)
        dateOfBirth = tk.Label(appWin, bg='light gray', text="Date of Birth").place(x=10,y=130)
    
        photo=tk.Label(appWin)
        photo.place(relwidth=0.30,relheight=0.15,x=250,y=40)
    
        appWin.mainloop()
        
    myApp('hello', 500, 500)
    

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 2015-07-27
      • 1970-01-01
      • 2021-09-04
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多