how to fix function "missing one required positional argument"

I am making a school project which allows the user to book a hotel room trough a tkinter gui.

def createBooking(self, controller):
            def lcount(keyword, fname):
                            with open(fname, 'r') as fin:
                                    return sum([1 for line in fin if keyword in line])

            def clearEntry():
                FirstNameEntry.delete(0, 'end')
                LastNameEntry.delete(0, 'end')
                EmailEntry.delete(0, 'end')
                PhoneEntry.delete(0, 'end')


            errorValue = 0

            daysBooked = int(controller.numberOfDays.get())
            selectedRoom= controller.roomVar.get()
            firstName = controller.FirstNameEntry.get()

            bookedDateIn = controller.dateCheckIn.get()
            bookedDateOut = dateCheckOut.get()

            if(any(char.isdigit() for char in firstName)):
                    messagebox.showerror("Input Error", "Please Enter A Valid First Name")
                    errorValue = 1

            lastName = controller.LastNameEntry.get()

            if(any(char.isdigit() for char in lastName)):
                    messagebox.showerror("Input Error", "Please Enter A Valid Last Name")
                    errorValue = 1

            email = controller.EmailEntry.get()
            phone = (controller.PhoneEntry.get())


            if(not re.match(r"[^@]+@[^@]+.[^@]+", email)):
                    messagebox.showerror("Email Error", "Please Enter a Valid Email")
                    errorValue = 1 

            if((len(phone))>9) or ((len(phone))<9) :
                    messagebox.showerror("Phone Number Error", "Please Enter a Valid Phone Number - 9 digits")
                    errorValue = 1

            if(daysBooked<1):
                messagebox.showerror("Booking Error", "Please Book For At Least One Night")
                errorValue = 1

            else:

                    try:
                            phone = int(controller.PhoneEntry.get())

                    except ValueError:
                            messagebox.showerror("Value Error", "Please Enter a Valid Phone Number")
                            errorValue=1



            if(errorValue == 0):




                    bookingCombination = (selectedRoom + ";" + str(firstName) + ";" + str(lastName) + ";" + str(email) + ";" + str(phone) + ";" + str(bookedDateIn) + ";" + str(bookedDateOut) + "\n")


                    f = open("Bookings.txt", "a")

                    numberOfSingleRoomsBooked = (lcount('Single', 'Bookings.txt'))
                    numberOfDoubleRoomsBooked = (lcount('Double', 'Bookings.txt'))

                    if(numberOfSingleRoomsBooked == 5 and selectedRoom in 'Single'):
                            messagebox.showerror("Booking Error", "Sorry There Are No More Single Rooms Available")

                    elif(numberOfDoubleRoomsBooked == 5 and selectedRoom in 'Double'):
                                messagebox.showerror("Booking Error", "Sorry There Are No More Double Rooms Available")

                    else:

                            f.write(bookingCombination)
                            clearEntry()
                            controller.show_frame(StartPage)

After the function createBooking runs with no errors I need it to switch frames however when trying to call the show_frame function I get the error "createBooking() missing 1 required positional argument: 'controller'"