import tkinter as tk from tkinter import ttk from tkinter import filedialog import atexit # Start of Code - Start of Tkinter loop Root_Window = tk.Tk() Root_Window.title("PiperTTS - Prototype GUI 2nd") # Sets the GUI Title # Setting up Window Starting Size and Position (can only be even numbers) Window_Width = 420 Window_Height = 580 # Getting Screen Width and Height Screen_Width = Root_Window.winfo_screenwidth() Screen_Height = Root_Window.winfo_screenheight() # Calculate Center of Screen for the window Window_PosX = (Screen_Width/2) - (Window_Width/2) Window_PosY = (Screen_Height/2) - (Window_Height/2) # Sets the GUI geometry and attempts to centers window on screen Root_Window.geometry(f'{Window_Width}x{Window_Height}+{int(Window_PosX)}+{int(Window_PosY)}') Root_Window.minsize(Window_Width, Window_Height) # Attempts to create a Input Frame try: Input_Box_Frame = ttk.Frame(Root_Window) except: print("An exception occurred - when creating input Frame.") # Attempts to create a Controls Frame try: Controls_Box_Frame = ttk.Frame(Root_Window) except: print("An exception occurred - when creating Controls Frame.") # Attempts to Place Input and Controls frames try: Input_Box_Frame.place(x = 0, y = 0, relwidth = 1, relheight = 0.8, anchor=CENTER) Controls_Box_Frame.place(x = 0, rely = 0.8, relwidth = 1, relheight = 0.8, anchor=CENTER) except: print("An exception occurred - when placing Frames.") # Attempts to create a Input box try: Input_Box = tk.Text(Input_Box_Frame, selectbackground="yellow", selectforeground="black", undo=True) Input_Box.pack(padx=5, pady=5, expand = True, fill = "both") except: print("An exception occurred - when creating input box.") # def PiperTTS_GUI_PlayAndPause(): try: if GUI_Button_PlayAndPause["text"] == "▶": GUI_Button_PlayAndPause["text"] = "⏸" else: GUI_Button_PlayAndPause["text"] = "▶" except: print("An exception occurred - when pressing Play And Pause Button.") # Creating Buttons GUI_Button_PlayAndPause = ttk.Button(Controls_Box_Frame, text="▶", command=PiperTTS_GUI_PlayAndPause) GUI_Button_Stop = ttk.Button(Controls_Box_Frame, text="⏹") GUI_Button_previous = ttk.Button(Controls_Box_Frame, text="⏮") GUI_Button_Next = ttk.Button(Controls_Box_Frame, text="⏭") # Creating a Test Text Label My_Test_Label = ttk.Label(Controls_Box_Frame, text="Test Text?") My_Test_Label.grid(row=1, column=0, columnspan=3) # Aligning Buttons to grid GUI_Button_PlayAndPause.grid(row=0, column=0) GUI_Button_previous.grid(row=0, column=1) GUI_Button_Stop.grid(row=0, column=2) GUI_Button_Next.grid(row=0, column=3) #Creating Toolbar menu Root_Toolbar = ttk.Menu(Root_Window) Root_Window.configure(menu=Root_Toolbar) #Creating File menu for Toolbar File_Toolbar = ttk.Menu(Root_Toolbar, tearoff=False) Root_Toolbar.add_cascade(label="File", menu=File_Toolbar) File_Toolbar.add_command(label="New") File_Toolbar.add_command(label="Open") File_Toolbar.add_command(label="Save as Wave") File_Toolbar.add_separator() File_Toolbar.add_command(label="Exit", command=Root_Window.quit) #Creating Playback menu for Toolbar Playback_Toolbar = ttk.Menu(Root_Toolbar, tearoff=False) Root_Toolbar.add_cascade(label="Playback", menu=Playback_Toolbar) Playback_Toolbar.add_command(label="▶") Playback_Toolbar.add_command(label="⏸") Playback_Toolbar.add_command(label="⏹") Playback_Toolbar.add_command(label="⏮") Playback_Toolbar.add_command(label="⏭") #Creating Tools menu for Toolbar Tools_Toolbar = ttk.Menu(Root_Toolbar, tearoff=False) Root_Toolbar.add_cascade(label="Tools", menu=Tools_Toolbar) Tools_Toolbar.add_command(label="Insert Selection") Tools_Toolbar.add_command(label="Insert Clipboard") Tools_Toolbar.add_separator() Tools_Toolbar.add_command(label="Randomise Text") Tools_Toolbar.add_command(label="Reverse Text") Tools_Toolbar.add_separator() Tools_Toolbar.add_command(label="Prefrences") # End of Code - Emd of Tkinter loop Root_Window.mainloop() # Function called on Exit def Registered_Exit(): print("Goodbye!?") # Regestering Exit atexit.register(Registered_Exit)