[英]How to call a function when a button is pressed in tkinter?
我編寫了我的代碼,以便在按下“SignIn”按鈕時調用“登錄”功能。 但是,每次運行代碼並按下按鈕時,都會顯示錯誤消息“_tkinter.TclError:image”pyimage2“不存在”,我似乎無法找到修復代碼的解決方案。
import tkinter
def Login():
window = tkinter.Tk()
window.title("Eat Well")
window.geometry("295x400")
UsernameLbl = tkinter.Label(window, text = "Username", fg= "white", bg= "black")
Utext = tkinter.Entry(window)
PasswordLbl = tkinter.Label(window, text = "Password", fg = "white", bg= "black")
Ptext = tkinter.Entry(window, show="*")
Login = tkinter.Button(window, text = "Login", fg = "black", bg = "honeydew", command = window.destroy )
window.configure(background= "#008bb5")
Photo = tkinter.PhotoImage(file = "Eating.gif")
w = tkinter.Label(window, image = Photo)
w.pack()
UsernameLbl.pack()
Utext.pack()
PasswordLbl.pack()
Ptext.pack()
Login.pack()
window.mainloop()
def Mainscreen():
window = tkinter.Tk()
window.title("Eat Well")
window.geometry("295x400")
Question = tkinter.Label(window, text = "Would you like to create an account or login?", fg = "black", bg = "white")
Create = tkinter.Button(window, text = "Create an account", fg = "white", bg = "black")
SignIn = tkinter.Button(window, text = "Login", fg = "white", bg = "black", command = Login)
Quit = tkinter.Button(window, text = "Quit", fg = "white", bg = "black", command = window.destroy)
window.configure(background = "#008bb5")
Photo = tkinter.PhotoImage(file = "Eating.gif")
w = tkinter.Label(window, image = Photo)
w.pack()
Question.pack()
Create.pack()
SignIn.pack()
Quit.pack()
window.mainloop()
Mainscreen()
按下SignIn按鈕時,應銷毀主屏幕並打開登錄屏幕。 但是,當前在主屏幕上按下登錄按鈕時,主屏幕保持打開狀態,登錄屏幕顯示為空白屏幕。
這應該工作。 注意使用
`tkinter.Toplevel()
和Image.open
。 這是因為調用該函數的按鈕本身位於活動窗口中。
import tkinter
from PIL import Image, ImageTk
def Login():
window = tkinter.Toplevel()
window.title("Eat Well")
window.geometry("295x400")
UsernameLbl = tkinter.Label(window, text = "Username", fg= "white", bg= "black")
Utext = tkinter.Entry(window)
PasswordLbl = tkinter.Label(window, text = "Password", fg = "white", bg= "black")
Ptext = tkinter.Entry(window, show="*")
Login = tkinter.Button(window, text = "Login", fg = "black", bg = "honeydew", command = window.destroy )
window.configure(background= "#008bb5")
im = Image.open("Eating.gif")
Photo = ImageTk.PhotoImage(im)
w = tkinter.Label(window)
w.pack()
UsernameLbl.pack()
Utext.pack()
PasswordLbl.pack()
Ptext.pack()
Login.pack()
window.mainloop()
def Mainscreen():
window = tkinter.Tk()
window.title("Eat Well")
window.geometry("295x400")
Question = tkinter.Label(window, text = "Would you like to create an account or login?", fg = "black", bg = "white")
Create = tkinter.Button(window, text = "Create an account", fg = "white", bg = "black")
SignIn = tkinter.Button(window, text = "Login", fg = "white", bg = "black", command = Login)
Quit = tkinter.Button(window, text = "Quit", fg = "white", bg = "black", command = window.destroy)
window.configure(background = "#008bb5")
im = Image.open("Eating.gif")
Photo = ImageTk.PhotoImage(im)
w = tkinter.Label(window)
w.pack()
Question.pack()
Create.pack()
SignIn.pack()
Quit.pack()
window.mainloop()
好的,問題是你試圖同時運行兩個Tk()
實例,你不應該這樣做。 這里和這里也描述了原因
取而代之的window = tkinter.Tk()
在你的Login()
您可以使用window = tkinter.Toplevel()
來解決類似下面的問題:
import tkinter
def Login():
# window = tkinter.Tk()
window = tkinter.Toplevel()
window.title("Eat Well")
window.geometry("295x400")
user_name_label = tkinter.Label(window, text="Username", fg="white", bg="black")
user_name_text = tkinter.Entry(window)
password_label = tkinter.Label(window, text="Password", fg="white", bg="black")
password_text = tkinter.Entry(window, show="*")
login = tkinter.Button(window, text="Login", fg="black", bg="honeydew", command=window.destroy)
window.configure(background="#008bb5")
photo = tkinter.PhotoImage(file="Eating.gif")
w = tkinter.Label(window, image=photo)
w.pack()
user_name_label.pack()
user_name_text.pack()
password_label.pack()
password_text.pack()
login.pack()
window.mainloop()
def Mainscreen():
window = tkinter.Tk()
window.title("Eat Well")
window.geometry("295x400")
question = tkinter.Label(window, text="Would you like to create an account or login?", fg="black", bg="white")
create = tkinter.Button(window, text="Create an account", fg="white", bg="black")
sign_in = tkinter.Button(window, text="Login", fg="white", bg="black", command=Login)
quit = tkinter.Button(window, text="Quit", fg="white", bg="black", command=window.destroy)
window.configure(background="#008bb5")
photo = tkinter.PhotoImage(file="Eating.gif")
w = tkinter.Label(window, image=photo)
w.pack()
question.pack()
create.pack()
sign_in.pack()
quit.pack()
window.mainloop()
Mainscreen()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.