Q:

How would I successfully call the colour changing function with an output?

The function doesn't have an output. It runs with no errors but I'm confused as to why there's no output. I'm open to any other ideas on how to configure the self.lbltochange label's colour from Page1. 
I have tried to directly configure the label from the command via lambda: self.p2.lbltochange.config(bg="blue"). This doesn't work. 
import tkinter as tk

class Main(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.geometry("200x200")

        container = tk.Frame(self)
        container.grid(row=0, column=0)

        self.frames = {}

        for F in (Page1, Page2):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0)

        self.show_frame(Page1)

    def show_frame(self, page_name):
        frame = self.frames[page_name]
        frame.tkraise()

    def get_page(self, page_name):
        return self.frames[page_name]

class Page1(tk.Frame):  

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        self.p2 = Page2(parent="", controller=self)
        self.button = tk.Button(self, text="Cmd", command=self.otherchange)
        self.button.pack()

    def otherchange(self):
        self.p2.changelbl()

class Page2(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        self.lbltochange = tk.Label(self, text="Label to change", bg="red")
        self.lbltochange.pack()

    def changelbl(self):
        self.lbltochange.config(bg="blue")

app = Main()
app.mainloop()

A:

You are creating a second frame Page2 inside Page1, but this frame is not displayed (with method grid()) so the method otherchange is executed and triggers changelbl for this invisible frame.
You can remove self.p2 = Page2(parent="", controller=self) and replace the call to changelbl by getting the reference of the created Page2 stored in the parent/controller:
class Page1(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        self.button = tk.Button(self, text="Cmd", command=self.otherchange)
        self.button.pack()

    def otherchange(self):
        page2 = self.controller.frames.get(Page2)
        page2.changelbl()

