In this video I’ll show you how to add entry boxes to a canvas with Tkinter and Python!
In the last few videos I’ve been showing you how to use canvas to add background images to your app that can be easily resized. In this video we’ll continue on by adding Entry boxes to our Canvas.
We’ll also create this little fake login screen app that allows you to enter your username and password. We’ll make the password entry box have stars to protect the password a little.
I’ll also show you how to make your app non-resizeable.
Python Code: canvas_entry.py
(Github Code)
from tkinter import * from PIL import ImageTk, Image root = Tk() root.title('Codemy.com - Canvas Entry Boxes') root.iconbitmap('c:/gui/codemy.ico') root.geometry("323x576") # make sure app can't be resized root.resizable(width=False, height=False) # Define Background Image bg = ImageTk.PhotoImage(file="images/app/bg.png") # Define Canvas my_canvas = Canvas(root, width=323, height=576, bd=0, highlightthickness=0) my_canvas.pack(fill="both", expand=True) # Put the image on the canvas my_canvas.create_image(0,0, image=bg, anchor="nw") # Create welcome screen def welcome(): un_entry.destroy() pw_entry.destroy() login_btn.destroy() # Add a welcome message my_canvas.create_text(160, 450, text="Welcome!", font=("Helvetica", 40), fill="white") # Define Entry Boxes un_entry = Entry(root, font=("Helvetica", 24), width=14, fg="#336d92", bd=0) pw_entry = Entry(root, font=("Helvetica", 24), width=14, fg="#336d92", bd=0) un_entry.insert(0, "username") pw_entry.insert(0, "password") # Add the entry boxes to the canvas un_window = my_canvas.create_window(34, 290, anchor="nw", window=un_entry) pw_window = my_canvas.create_window(34, 370, anchor="nw", window=pw_entry) # Define Button login_btn = Button(root, text="Login", font=("Helvetica", 20), width=15, fg="#336d92", command=welcome) login_btn_window = my_canvas.create_window(36, 470, anchor="nw", window=login_btn) # Define entry_clear function def entry_clear(e): if un_entry.get() == 'username' or pw_entry.get() == 'password': un_entry.delete(0, END) pw_entry.delete(0, END) # change text to stars pw_entry.config(show="*") # Bind the entry boxes un_entry.bind("", entry_clear) pw_entry.bind(" ", entry_clear) root.mainloop()
Add comment