为什么报错,显示路径不存在

from tkinter import *
from tkinter import filedialog
import tkinter.messagebox
from PIL import Image
from PIL import ImageChops
import tkinter as tk
from tkinter.filedialog import askopenfilename

def main():
    def selectExcelfile():
        sfname = filedialog.askopenfilename(title='选择文件', filetypes=[('All files','*.*')])
        
        

        text1.insert(INSERT,sfname)
        
        print(sfname)
        global x
        x=sfname
        return x

    def closeThisWindow():
        root.destroy()

    def doProcess():
        
        
        windows=tk.Tk()
        
        windows.title('宁百川')
        windows.geometry('500x300')
        canvas=tk.Canvas(windows,bg="blue",height=100,width=100)
        image_file=tk.PhotoImage(file=x)
        image=canvas.create_image(50,50,anchor='center',image=image_file)


        canvas.pack()
        
        windows.mainloop()


    root=Tk()


    root.title('Python GUI Learning')


    root.geometry('500x300+570+200')


    label1=Label(root,text='请选择文件:')
    text1=Entry(root,bg='white',width=45)
    button1=Button(root,text='浏览',width=8,command=selectExcelfile)
    button2=Button(root,text='处理',width=8,command=doProcess)
    button3=Button(root,text='退出',width=8,command=closeThisWindow)
 

    label1.pack()
    text1.pack()
    button1.pack()
    button2.pack()
    button3.pack() 

    label1.place(x=30,y=30)
    text1.place(x=100,y=30)
    button1.place(x=390,y=26)
    button2.place(x=160,y=80)
    button3.place(x=260,y=80)
 
    root.mainloop() 

 
if __name__=="__main__":
    main()
 

因为一个程序中只能存在一个根窗口,也就是说只能存在一个Tk(),其他的窗口只能以顶层窗口(Toplevel())的形式存在。在doProcess()函数里将window=tk.Tk()改为windows = tk.Toplevel(),就可以了,参考一下这里解决办法:https://www.cnblogs.com/future-dream/p/10932575.html

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632