update button style

This commit is contained in:
Andrew Ward
2025-03-21 10:31:25 +00:00
parent d95382e4b3
commit c353e79b6a
2 changed files with 81 additions and 16 deletions

View File

@@ -11,6 +11,7 @@ import sys
from pystray import Icon as icon, MenuItem as item, Menu as menu
from PIL import Image, ImageDraw
from tkinter import ttk, messagebox, simpledialog, Menu, Frame, Canvas, Scrollbar
import customtkinter as ctk
from openai import OpenAI
from dotenv import load_dotenv
from pathlib import Path
@@ -203,6 +204,29 @@ class TextToMic(tk.Tk):
bg_color = self.style.lookup('TFrame', 'background')
text_color = self.style.lookup('TLabel', 'foreground')
# Define custom button styles for pill-shaped buttons
self.style.configure('Pill.TButton',
font=('Arial', 13, 'bold'),
borderwidth=0,
relief='flat',
padding=(20, 8))
self.style.configure('RecordPill.TButton',
font=('Arial', 13, 'bold'),
background='#d32f2f',
foreground='white',
borderwidth=0,
relief='flat',
padding=(20, 8))
self.style.configure('PlayPill.TButton',
font=('Arial', 13, 'bold'),
background='#058705',
foreground='white',
borderwidth=0,
relief='flat',
padding=(20, 8))
# Voice Selection
self.voice_var = tk.StringVar()
voices = ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer']
@@ -256,22 +280,49 @@ class TextToMic(tk.Tk):
self.text_input.configure(bg=bg_color, fg=text_color, insertbackground=text_color)
self.text_input.grid(column=0, row=6, columnspan=2, pady=(0, 20), sticky="nsew") # Fill available width
# Create a frame for the buttons to allow for better styling
button_frame = ttk.Frame(main_frame)
button_frame.grid(column=0, row=7, columnspan=2, sticky="ew", pady=(0, 20))
button_frame.columnconfigure(0, weight=1)
button_frame.columnconfigure(1, weight=1)
# Get keyboard shortcuts from settings
settings = self.load_settings()
record_shortcut = "+".join(filter(None, settings["hotkeys"]["record_start_stop"]))
play_shortcut = "+".join(filter(None, settings["hotkeys"]["play_last_audio"]))
# Button configuration
self.recording = False # State to check if currently recording
self.record_button = ttk.Button(main_frame, text="Record Mic", command=self.toggle_recording)
self.record_button.grid(column=0, row=7, sticky=tk.W + tk.E, pady=(0, 20), padx=(0, 10)) # Left padding to separate buttons
self.submit_button = ttk.Button(main_frame, text="Play Audio", style="Green.TButton", command=self.submit_text )
self.submit_button.grid(column=1, row=7, sticky=tk.W + tk.E, pady=(0, 20), padx=(10, 0)) # Right padding to separate buttons
# Create CTk buttons with proper rounded corners
button_height = 35
button_width = 250
# Record button with CTkButton
self.record_button = ctk.CTkButton(
button_frame,
text=f"Record Mic ({record_shortcut})",
corner_radius=20,
height=button_height,
width=button_width,
fg_color="#d32f2f",
font=("Arial", 13, "bold"),
command=self.toggle_recording
)
self.record_button.grid(row=0, column=0, sticky="ew", padx=(0, 10))
# Play button with CTkButton
self.submit_button = ctk.CTkButton(
button_frame,
text=f"Play Audio ({play_shortcut})",
corner_radius=20,
height=button_height,
width=button_width,
fg_color="#058705",
font=("Arial", 13, "bold"),
command=self.submit_text
)
self.submit_button.grid(row=0, column=1, sticky="ew", padx=(10, 0))
self.create_presets_section()
@@ -1148,8 +1199,16 @@ Please also make sure you read the Terms of use and licence statement before usi
try:
self.recording = True
self.record_button.config(text="Stop and Insert", style='Recording.TButton')
self.submit_button.config(text="Stop and Play", style='Recording.TButton')
# Get keyboard shortcuts from settings
settings = self.load_settings()
record_shortcut = "+".join(filter(None, settings["hotkeys"]["record_start_stop"]))
play_shortcut = "+".join(filter(None, settings["hotkeys"]["play_last_audio"]))
stop_shortcut = "+".join(filter(None, settings["hotkeys"]["stop_recording"]))
# Update CTkButton for recording state, keeping shortcuts visible
self.record_button.configure(text=f"Stop and Insert ({record_shortcut})", fg_color="#d32f2f")
self.submit_button.configure(text=f"Stop and Play ({play_shortcut})", fg_color="#d32f2f")
self.frames = []
@@ -1186,8 +1245,14 @@ Please also make sure you read the Terms of use and licence statement before usi
if cancel_save==False:
self.save_recording(auto_play=auto_play)
self.record_button.config(text="Record Mic", style='TButton') # Revert to default style
self.submit_button.config(text="Play", style='Green.TButton') # Revert to default style
# Get keyboard shortcuts from settings
settings = self.load_settings()
record_shortcut = "+".join(filter(None, settings["hotkeys"]["record_start_stop"]))
play_shortcut = "+".join(filter(None, settings["hotkeys"]["play_last_audio"]))
# Reset button appearance
self.record_button.configure(text=f"Record Mic ({record_shortcut})", fg_color="#d32f2f")
self.submit_button.configure(text=f"Play Audio ({play_shortcut})", fg_color="#058705")
def save_recording(self, auto_play = False):
file_path = "output.wav"