Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import numpy as np
- from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
- from matplotlib.figure import Figure
- from tkinter import Tk, PhotoImage
- from tkinter.ttk import Frame, Label, Button
- LARGE_FONT = ("Verdana", 12)
- class GeoffGUI(Tk):
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.rowconfigure(0, weight=1)
- self.columnconfigure(0, weight=1)
- container = Frame(self)
- container.grid(sticky='nsew')
- container.rowconfigure(0, weight=1)
- container.columnconfigure(0, weight=1)
- container.grid()
- self.frames = {}
- for obj in (StartPage, PageOne, PageTwo, PageThree):
- self.frames[obj.__name__] = obj(container, self)
- self.frames[obj.__name__].grid(row=0, column=0, sticky="nsew")
- self.show_frame('StartPage')
- def show_frame(self, cont):
- self.frames[cont].tkraise()
- class StartPage(Frame):
- def __init__(self, parent, controller):
- super().__init__(parent)
- Label(self, text="Start Page", font=LARGE_FONT).grid(padx=10, pady=10)
- Button(self, text="Visit Page 1", command=lambda: controller.show_frame('PageOne')).grid()
- Button(self, text="Visit Page 2", command=lambda: controller.show_frame('PageTwo')).grid()
- Button(self, text="Visit Page 3 (Matplotlib)", command=lambda: controller.show_frame('PageThree')).grid()
- class PageOne(Frame):
- def __init__(self, parent, controller):
- super().__init__(parent)
- Label(self, text="Page 1", font=LARGE_FONT).grid(padx=10, pady=10)
- Button(self, text="Back to Home", command=lambda: controller.show_frame('StartPage')).grid()
- Button(self, text="Visit Page 2", command=lambda: controller.show_frame('PageTwo')).grid()
- Button(self, text="Visit Page 3 (Matplotlib)", command=lambda: controller.show_frame('PageThree')).grid()
- class PageTwo(Frame):
- def __init__(self, parent, controller):
- super().__init__(parent)
- Label(self, text="Page 2", font=LARGE_FONT).grid(padx=10, pady=10)
- Button(self, text="Back to Home", command=lambda: controller.show_frame('StartPage')).grid()
- Button(self, text="Visit Page 1", command=lambda: controller.show_frame('PageOne')).grid()
- Button(self, text="Visit Page 3 (Matplotlib)", command=lambda: controller.show_frame('PageThree')).grid()
- class PageThree(Frame):
- def __init__(self, parent, controller):
- super().__init__(parent)
- Label(self, text="Matplotlib", font=LARGE_FONT).grid(padx=10, pady=10)
- Button(self, text="Back to Home", command=lambda: controller.show_frame('StartPage')).grid()
- fig = Figure(figsize=(5, 4), dpi=100)
- t = np.arange(0, 3, .01)
- fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))
- canvas = FigureCanvasTkAgg(fig, master=self)
- canvas.draw()
- canvas.get_tk_widget().grid()
- toolbar = NavigationToolbar2Tk(canvas, self)
- toolbar.update()
- canvas.get_tk_widget().pack()
- app = GeoffGUI()
- app.title("A simple GUI program")
- # if "nt" == os.name:
- # pass
- # else:
- # icon = PhotoImage(file='clienticon.png')
- # app.tk.call('wm', 'iconphoto', app._w, icon)
- app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement