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