簡體   English   中英

如何使 Tkinter 輸入字段在按鈕按下時可見

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM