To jest podstawa do tworzenia czegokolwiek w tkinter
# Lubię importować tylko to, czego apka używa a nie wszystko *
from tkinter import Tk
#Zamiast 'root' możesz wstawić nazwę jaka ci się podoba. Ja się przyzwyczaiłem do root
root = Tk()
#Tej linijki brakowało. Trzeba wystartować pętlę
root.mainloop()
W przypadku twojego kodu powinno być tak:
from tkinter import Tk, Canvas
tk=Tk()
p = Canvas(tk, width=500, height=500)
p.pack()
p.create_rectangle(10, 10, 50, 300)
tk.mainloop()
I zapraszam do lektury
https://docs.python.org/3/library/tkinter.html#module-tkinter