![](/img/trans.png)
[英]How to delete an entry when I press a Button in Python Tkinter in a class
[英]How to make Tkinter Entry field visible on button press
我正在使用 Python Tkinter 制作一個簡單的登錄菜單。 該代碼適用於登錄和所有這些東西,但我想制作一個有效的創建新帳戶按鈕或類似的東西。 我將使用列表來執行此操作,但首先我需要確保在單擊創建新帳戶按鈕時彈出輸入字段,這是代碼:-
from tkinter import*
from tkinter import messagebox
class Login:
def __init__(self,root):
self.root=root
self.root.title("Login")
self.root.geometry("1199x600+100+50")
self.bg=PhotoImage(file="png.png")
self.bg_image=Label(self.root,image=self.bg).place(x=0,y=0,relwidth=1,relheight=1)
#Frame
Frame_login=Frame(self.root,bg="white")
Frame_login.place(x=150,y=150,height=340,width=500)
title=Label(Frame_login,text="Login Here",font=("Impact",35, "bold","underline"),fg="red",bg="white").place(x=160,y=30)
desc=Label(Frame_login,text="Login Area",font=("Goudy old",15, "bold","underline"),fg="purple",bg="white").place(x=80,y=100)
lbl_user=Label(Frame_login,text="Username:",font=("Goudy old",15,"underline","bold"),fg="#00ffff",bg="white").place(x=115,y=140)
self.txt_user=Entry(Frame_login,font=("times new roman", 15),bg="lightgray")
self.txt_user.place(x=115,y=170,width=350,height=35)
lbl_pass=Label(Frame_login,text="Password:",font=("Goudy old",15,"underline","bold"),fg="#00ffff",bg="white").place(x=115,y=210)
self.txt_pass=Entry(Frame_login,font=("times new roman", 15),bg="lightgray")
self.txt_pass.place(x=115,y=240,width=350,height=35)
forget_btn= Button(Frame_login,command=self.register,text="Create New Account",cursor="hand2", bg="white", fg='lime', bd=0,font=("times new roman", 12)).place(x=115,y=280)
log_btn= Button(self.root,command=self.login_function,text="Login",cursor="hand2", fg="#d77337", bg="#d77337", font=("times new roman", 20)).place(x=315,y=470,width=180,height=40)
def login_function(self):
if self.txt_pass.get()=="" or self.txt_user.get()=="":
messagebox.showerror("Error!","All fields are required", parent=self.root)
elif self.txt_user.get()!="abcd" or self.txt_pass.get()!="1234":
messagebox.showerror("Error!"," Invalid Username or Password", parent=self.root)
else:
messagebox.showinfo("Welcome!","Succesfully Logged In!")
root=Tk()
obj=Login(root)
root.mainloop()
這是一個簡單的示例,說明它的外觀:
from tkinter import Tk, Frame, Button, Entry, Label
class Login(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
# data frame
self.data_frame = Frame(self)
self.data_frame.pack(pady=10)
# username:
Label(self.data_frame, text='Username:').pack()
# username entry
self.username = Entry(self.data_frame)
self.username.pack()
# password:
Label(self.data_frame, text='Password:').pack()
# password entry
self.password = Entry(self.data_frame)
self.password.pack()
# button frame
self.btn_frame = Frame(self)
self.btn_frame.pack()
# login btn
Button(self.btn_frame, text='Login', command=self.login).pack(side='left', padx=10, pady=10)
# signup button
Button(self.btn_frame, text='Sign Up', command=self.sign_up).pack(side='left', padx=10, pady=10)
def login(self):
print('login successful')
root.destroy()
def sign_up(self):
SignUp(root).pack()
self.destroy()
class SignUp(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
# data frame
self.data_frame = Frame(self)
self.data_frame.pack(pady=10)
# username:
Label(self.data_frame, text='Username:').pack()
# username entry
self.username = Entry(self.data_frame)
self.username.pack()
# password:
Label(self.data_frame, text='Password:').pack()
# password entry
self.password = Entry(self.data_frame)
self.password.pack()
# button frame
self.btn_frame = Frame(self)
self.btn_frame.pack()
# login btn
Button(self.btn_frame, text='Sign Up', command=self.sign_up).pack(side='left', padx=10, pady=10)
# signup button
Button(self.btn_frame, text='Cancel', command=self.cancel).pack(side='left', padx=10, pady=10)
def sign_up(self):
print('Signed up')
Login(root).pack()
self.destroy()
def cancel(self):
Login(root).pack()
self.destroy()
root = Tk()
Login(root).pack()
root.mainloop()
這兩個類幾乎都是框架,可以根據用戶按下的按鈕進行更改,還可以為方法添加更多功能。 否則兩個類幾乎相同,它們幾乎是副本,只是按鈕名稱和方法名稱發生了變化 rest 是相同的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.