源代碼如下:
from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image,ImageTk
class mainapp:
def __init__(self):
root=Tk()
root.title("Several")
root.geometry('200x300')
Button(root,text='自動(dòng)取點(diǎn)',command=self.another1).place(relx=0.3,rely=0.15,anchor=CENTER)
Button(root,text='圖片翻轉(zhuǎn)').place(relx=0.7,rely=0.15,anchor=CENTER)
root.mainloop()
def another1(self):
qudian()
def another2(self):
fanzhuan
class qudian:
def __init__(self):
r1=Tk()
r1.title('自動(dòng)取點(diǎn)')
r1.geometry('400x400')
Label(r1,text='圖片路徑:').place(relx=0,rely=0.04)
e1=Entry(r1)
e1.place(relx=0.15,rely=0.04)
Button(r1,text='選擇圖片').place(relx=0.52,rely=0.02)
Label(r1,text="所選擇的圖片:").place(relx=0,rely=0.13)
img_open=Image.open('desert.jpg')
img_open.thumbnail((200,200))
img=ImageTk.PhotoImage(img_open)
l1=Label(r1,image=img)
l1.place(relx=0,rely=0.18)
r1.mainloop()
class fanzhuan:
def __init__(self):
r2=Tk()
r2.mainloop()
mainapp()
運(yùn)行以后報(bào)錯(cuò):
image
之后去網(wǎng)上查了解決辦法,在 https://zhidao.baidu.com/question/1800925191188288187.html 這個(gè)網(wǎng)址下找到了正確答案笼痛。因?yàn)樵谝粋€(gè)程序中只能存在一個(gè)根窗口颂暇,也就是說(shuō)只能存在一個(gè)Tk()坷襟,其他的窗口只能以頂層窗口(Toplevel())的形式存在钦幔。
于是將qudian類下的Tk()改成Toplevel()后窃诉,問(wèn)題完全解決豆胸。
修改后的代碼:
class qudian:
def __init__(self):
r1=Toplevel()
r1.title('自動(dòng)取點(diǎn)')
r1.geometry('400x400')
Label(r1,text='圖片路徑:').place(relx=0,rely=0.04)
e1=Entry(r1)
e1.place(relx=0.15,rely=0.04)
Button(r1,text='選擇圖片').place(relx=0.52,rely=0.02)
Label(r1,text="所選擇的圖片:").place(relx=0,rely=0.13)
img_open=Image.open('desert.jpg')
img_open.thumbnail((200,200))
img=ImageTk.PhotoImage(img_open)
l1=Label(r1,image=img)
l1.place(relx=0,rely=0.18)
r1.mainloop()