FlashGui 0.1.5
Costruisci interfacce desktop con il sorriso. Componenti già pronti, layout proporzionale, temi personalizzabili.
✨ Perché FlashGui?
Hai presente quando vuoi creare una piccola app desktop in Python e ti scontri con la complessità di Tkinter o la verbosità di wxPython? FlashGui nasce per darti calcolatrice, blocco note, paint, orologio e calendario già funzionanti in 3 righe di codice. Se vuoi costruire la tua interfaccia da zero, il componente WINDOW ti permette di posizionare qualsiasi widget usando coordinate proporzionali (0.0 → 1.0) e i font si ridimensionano da soli. Tutto con un look pulito, moderno e completamente personalizzabile.
📦 Installazione in un soffio
pip install FlashGui
wxPython e charset_normalizer verranno installati automaticamente. Nessun'altra dipendenza.
📚 Dipendenze
FlashGui è costruito sopra wxPython Phoenix (wxWidgets) e utilizza charset_normalizer per il rilevamento automatico delle codifiche nel blocco note. Entrambe le librerie vengono installate automaticamente con pip.
📜 Licenze – Leggi con attenzione
- La Licenza MIT di FlashGui (testo sotto).
- La wxWindows Library Licence di wxPython (LGPL con eccezione).
- La Licenza MIT di
charset_normalizer.
Per evitare confusione, non abbiamo pubblicato testi parziali qui sul sito. Trovi tutti i file legali completi direttamente dentro la cartella della libreria, nel percorso:
FlashGUI/licenses/
🧮 CALCULATOR – La calcolatrice che puoi vestire a modo tuo
Una calcolatrice completa con display, 20 pulsanti e gestione degli errori. Puoi cambiarne ogni singolo aspetto e agganciare le tue funzioni a ogni tasto.
Costruttore
CALCULATOR(title="Calculator", size=(3,2), color=(240,240,240), icon=None, maximized=False, min_size=(5,4), max_size=(1,1), style="light")
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
title | str | "Calculator" | Titolo della finestra. |
size | tuple (larghezza, altezza) | (3,2) | Dimensioni relative allo schermo. Il valore indica in quante parti dividere lo schermo. Es. (3,2) → larghezza = schermo/3, altezza = schermo/2. |
color | tuple (R,G,B) | (240,240,240) | Colore di sfondo della finestra. |
icon | str | None | Percorso a un file .png o .ico per l'icona della finestra. |
maximized | bool | False | Se True, la finestra parte massimizzata. |
min_size | tuple (larghezza, altezza) | (5,4) | Dimensioni minime (divisore dello schermo). |
max_size | tuple (larghezza, altezza) | (1,1) | Dimensioni massime (divisore dello schermo). (1,1) = schermo intero. |
style | str | "light" | Tema: "light" o "dark". |
Metodo .Edit() – Personalizzazione completa
Modifica testi, colori e aspetto di ogni elemento. Tutti i parametri sono opzionali.
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
button_0_text … button_9_text | str | "0"…"9" | Etichetta dei pulsanti numerici. |
button_0_bg … button_9_bg | tuple RGB | (240,240,240) | Colore di sfondo dei pulsanti numerici. |
button_0_fg … button_9_fg | tuple RGB | (0,0,0) | Colore del testo dei pulsanti numerici. |
button_dot_text | str | "." | Etichetta pulsante punto decimale. |
button_dot_bg, button_dot_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante punto. |
button_plus_text | str | "+" | Etichetta addizione. |
button_plus_bg, button_plus_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante +. |
button_minus_text | str | "-" | Etichetta sottrazione. |
button_minus_bg, button_minus_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante -. |
button_mul_text | str | "*" | Etichetta moltiplicazione. |
button_mul_bg, button_mul_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante *. |
button_div_text | str | "/" | Etichetta divisione. |
button_div_bg, button_div_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante /. |
button_C_text | str | "C" | Etichetta pulsante Clear. |
button_C_bg, button_C_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante C. |
button_DEL_text | str | "DEL" | Etichetta pulsante Canc. |
button_DEL_bg, button_DEL_fg | tuple RGB | (240,240,240), (0,0,0) | Colori pulsante DEL. |
button_eq_text | str | "=" | Etichetta pulsante Uguale. |
button_eq_bg | tuple RGB | (0,120,215) | Sfondo del tasto = (blu di default). |
button_eq_fg | tuple RGB | (255,255,255) | Colore testo tasto =. |
entry_bg_color | tuple RGB | (240,240,240) | Sfondo del display. |
entry_text_color | tuple RGB | (0,0,0) | Colore testo display. |
message_error | str | "Error" | Messaggio mostrato in caso di errore di valutazione. |
Metodo .Logic() – Callback personalizzati
Ogni parametro accetta una funzione senza argomenti (o None per comportamento predefinito).
| Parametro | Descrizione |
|---|---|
button_0_command … button_9_command | Funzione chiamata alla pressione del tasto numerico. |
button_dot_command | Callback per il tasto punto. |
button_plus_command | Callback per +. |
button_minus_command | Callback per -. |
button_mul_command | Callback per *. |
button_div_command | Callback per /. |
button_eq_command | Callback per = (sostituisce eval). |
button_C_command | Callback per Clear. |
button_DEL_command | Callback per Delete. |
Metodi pubblici aggiuntivi
GetText()→ str: restituisce il testo nel display.SetText(testo)→ imposta il display e l'espressione interna.AppendText(testo)→ aggiunge testo in coda all'espressione.Clear()→ svuota display e memoria.AddTimer(ms, command)→ avvia un timer che esegue command ogni ms millisecondi.run()→ avvia il loop principale.
📘 Esempio CALCULATOR
from FlashGui import CALCULATOR
def mio_callback():
print("Hai premuto un tasto personalizzato!")
calc = CALCULATOR(title="La mia calcolatrice", size=(3,2), color=(50,50,60), style="dark")
calc.Edit(
button_eq_bg=(200,50,50),
button_eq_fg=(255,255,255),
entry_bg_color=(30,30,40),
entry_text_color=(0,200,0),
message_error="ERRORE"
)
calc.Logic(button_0_command=mio_callback)
calc.run()
📝 NOTEPAD – Un editor di testo con i fiocchi
Blocco note completo: apertura/salvataggio con rilevamento automatico della codifica (charset_normalizer), menu personalizzabili, barra di stato, menu contestuale e temi scuri.
Costruttore
Stessi parametri di CALCULATOR (title, size, color, icon, maximized, min_size, max_size, style).
Metodo .Edit() – Personalizzazione totale
Oltre 50 parametri per personalizzare ogni testo, colore e comportamento.
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
file_menu_text | str | "File" | Etichetta menu File. |
edit_menu_text | str | "Edit" | Etichetta menu Modifica. |
help_menu_text | str | "Help" | Etichetta menu Aiuto. |
new_text, open_text, save_text, saveas_text, exit_text | str | "New", "Open...", "Save", "Save As...", "Exit" | Testi voci menu File. |
undo_text, redo_text, cut_text, copy_text, paste_text, selectall_text | str | "Undo","Redo","Cut","Copy","Paste","Select All" | Testi voci menu Edit. |
about_text | str | "About" | Testo voce About. |
bg_color, text_ctrl_bg, text_ctrl_fg | tuple RGB | (240,240,240), (255,255,255), (0,0,0) | Colori sfondo finestra, area testo e testo. |
menubar_bg, menubar_fg, menubar_hover | tuple RGB | (235,235,235), (0,0,0), (200,220,240) | Colori barra menu. |
menu_bg, menu_fg, menu_hover, menu_radius | tuple RGB / int | (250,250,250), (0,0,0), (200,220,240), 6 | Colori menu a tendina e raggio bordi. |
statusbar_bg, statusbar_fg, statusbar_separator_color | tuple RGB | (240,240,240), (0,0,0), (200,200,200) | Colori barra di stato. |
ln_text, col_text, words_text, chars_text, untitled_text | str | "Ln","Col","Words","Chars","Untitled" | Etichette barra di stato. |
open_dialog_title, open_dialog_file_type | str, tuple | "Open Text file", ("Text Files (*.txt)", "All files (*.*)") | Titolo e filtro finestra Apri. |
save_as_dialog_title, save_as_dialog_file_type | str, tuple | "Save Text file", ("Text Files (*.txt)", "All files (*.*)") | Titolo e filtro Salva con nome. |
maybe_save_dialog_title, maybe_save_dialog_text | str | "Save changes", "There are unsaved changes..." | Titolo e testo dialogo salvataggio modifiche. |
messagebox_about_title, messagebox_about_text | str | "About Notepad", "Notepad created with FastGui.\nVersion 1.0" | Titolo e testo finestra About. |
popup_cut_text, popup_copy_text, popup_paste_text, popup_select_all_text | str | "Cut","Copy","Paste","Select All" | Testi menu contestuale. |
Metodo .Logic() – Sostituisci le azioni predefinite
| Parametro | Descrizione |
|---|---|
menu_new_command, menu_open_command, menu_save_command, menu_save_as_command, menu_exit_command | Callback per le voci del menu File. |
menu_undo_command, menu_redo_command, menu_cut_command, menu_copy_command, menu_paste_command, menu_select_all_command | Callback per le voci del menu Edit. |
menu_about_command | Callback per About. |
popup_cut_command, popup_copy_command, popup_paste_command, popup_select_all_command | Callback per menu contestuale. |
📘 Esempio NOTEPAD
from FlashGui import NOTEPAD
def salva_personalizzato():
print("Salvataggio personalizzato!")
nota = NOTEPAD(title="Mio Blocco Note", size=(2,2), style="dark")
nota.Edit(
file_menu_text="Archivio",
edit_menu_text="Modifica",
text_ctrl_bg=(40,40,50),
text_ctrl_fg=(200,200,100),
menubar_bg=(60,60,70),
menubar_fg=(255,255,255)
)
nota.Logic(menu_save_command=salva_personalizzato)
nota.run()
🎨 PAINT – Disegna come su una tela vera
Pennello, gomma, secchiello (riempimento), linea, cerchio, rettangolo. Salva in PNG o JPG.
Costruttore
Stessi parametri standard, incluso style.
Metodo .Edit()
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
brush_button_text, eraser_button_text, bucket_button_text, line_button_text, circle_button_text, rect_button_text | str | "🖌️ Brush","🧽 Eraser","🪣 Bucket","📏 Line","⭕ Circle","⬜ Rectangle" | Testi pulsanti strumenti. |
brush_button_bg, brush_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori sfondo e testo per il pulsante Pennello. |
eraser_button_bg, eraser_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Gomma. |
bucket_button_bg, bucket_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Secchiello. |
line_button_bg, line_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Linea. |
circle_button_bg, circle_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Cerchio. |
rect_button_bg, rect_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Rettangolo. |
clear_button_text, save_button_text | str | "🧹 Clear","💾 Save" | Testi pulsanti Clear e Save. |
clear_button_bg, clear_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Clear. |
save_button_bg, save_button_fg | tuple RGB | (255,255,255), (0,0,0) | Colori per Save. |
toolbar_panel_bg | tuple RGB | (240,240,245) | Sfondo barra strumenti. |
canvas_bg | tuple RGB | (255,255,255) | Sfondo area disegno. |
width_text | str | "Width" | Testo etichetta spessore. |
title_save_image | str | "Save Image" | Titolo finestra di salvataggio. |
text_file_png, text_file_jpg | str | "PNG files", "JPG files" | Descrizione tipi file nel dialog. |
Metodo .Logic()
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
current_tool | str | "brush" | Strumento iniziale: "brush", "eraser", "line", "circle", "rect", "bucket". |
color_picker_start_color | tuple RGB | (0,0,0) | Colore iniziale del selettore. |
slider_start_value | int | 5 | Spessore iniziale. |
slider_from_value, slider_to_value | int | 0, 100 | Minimo e massimo slider. |
brush_button_command, eraser_button_command, line_button_command, circle_button_command, rect_button_command, bucket_button_command | callable | None | Callback per i pulsanti strumento. |
clear_button_command, save_button_command | callable | None | Callback per Clear e Save. |
📘 Esempio PAINT
from FlashGui import PAINT
paint = PAINT(title="Mio Paint", size=(2,2), style="light")
paint.Edit(
brush_button_text="Pennello",
eraser_button_text="Gomma",
canvas_bg=(200,230,200),
width_text="Spessore"
)
paint.Logic(current_tool="brush", slider_start_value=10)
paint.run()
⏰ CLOCK – Orologio, Timer e Cronometro in un'unica finestra
Costruttore
Parametri standard + style.
Metodo .Edit() – Parametri completi
La tabella seguente elenca tutti i parametri modificabili.
| Categoria | Parametro | Tipo | Default |
|---|---|---|---|
| Navigazione | nav_bg_color | tuple RGB | #F5F5F7 (light) / #242424 (dark) |
nav_button_bg_color | tuple RGB | #F5F5F7 / #242424 | |
nav_clock_fg_color, nav_timer_fg_color, nav_stopwatch_fg_color | tuple RGB | #007AFF / cyan (dark) | |
nav_clock_text, nav_timer_text, nav_stopwatch_text | str | "CLOCK", "TIMER", "STOPWATCH" | |
| Orologio | clock_bg_color | tuple RGB | #FFFFFF / #1E1E1E |
clock_time_bg_color, clock_time_fg_color | tuple RGB | bg_color, #1D1D1F / #FFFFFF | |
clock_date_bg_color, clock_date_fg_color | tuple RGB | bg_color, #007AFF / #4DA3FF | |
clock_time_text, clock_date_text | str | "00:00:00", "DATE" | |
| Timer | timer_bg_color | tuple RGB | #FFFFFF / #1E1E1E |
timer_display_bg_color, timer_display_fg_color | tuple RGB | bg_color, #007AFF / white | |
timer_spin_h_bg_color, timer_spin_h_fg_color (e per m, s) | tuple RGB | #FFFFFF / #1D1D1F (light), #2A2A2A / #FFFFFF (dark) | |
timer_lbl_h_bg_color, timer_lbl_h_fg_color (e per m, s) | tuple RGB | bg_color, #8E8E93 / #A0A0A0 | |
timer_btn_start_bg_color, timer_btn_start_fg_color | tuple RGB | None / #1D1D1F (light), #2A2A2A / #FFFFFF (dark) | |
timer_btn_reset_bg_color, timer_btn_reset_fg_color | tuple RGB | come start | |
timer_display_text | str | "00:00:00" | |
timer_lbl_h_text, timer_lbl_m_text, timer_lbl_s_text | str | "h", "m", "s" | |
timer_btn_start_text, timer_btn_pause_text, timer_btn_reset_text | str | "START", "PAUSE", "RESET" | |
| Cronometro | stopwatch_bg_color | tuple RGB | #FFFFFF / #1E1E1E |
stopwatch_display_bg_color, stopwatch_display_fg_color | tuple RGB | bg_color, #007AFF / white | |
stopwatch_btn_start_bg_color, stopwatch_btn_start_fg_color | tuple RGB | None / #1D1D1F, #2A2A2A / #FFFFFF | |
stopwatch_btn_reset_bg_color, stopwatch_btn_reset_fg_color | tuple RGB | come start | |
stopwatch_display_text | str | "00:00.0" | |
stopwatch_btn_start_text, stopwatch_btn_stop_text, stopwatch_btn_reset_text | str | "START", "STOP", "RESET" |
Metodo .Logic()
| Parametro | Descrizione |
|---|---|
nav_clock_command, nav_timer_command, nav_stopwatch_command | Callback per click schede. |
timer_start_command, timer_reset_command | Callback avvio/reset timer. |
stopwatch_start_command, stopwatch_reset_command | Callback avvio/reset cronometro. |
timer_base_h, timer_base_m, timer_base_s | Valori iniziali timer (int). |
📘 Esempio CLOCK
from FlashGui import CLOCK
clock = CLOCK(title="Orologio multifunzione", size=(2,2), style="dark")
clock.Edit(
nav_clock_text="OROLOGIO",
nav_timer_text="TIMER",
nav_stopwatch_text="CRONOMETRO",
clock_time_fg_color=(255,100,100),
clock_date_fg_color=(100,200,255),
timer_btn_start_text="AVVIA",
timer_btn_reset_text="RESET"
)
clock.Logic(timer_base_h=0, timer_base_m=1, timer_base_s=30)
clock.run()
📅 CALENDAR – Un calendario interattivo e internazionalizzabile
Costruttore
Parametri standard + style.
Metodo .Edit() – Parametri completi
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
bg_color | tuple RGB | #FFFFFF / #242424 | Sfondo principale. |
title_fg_color | tuple RGB | #1D1D1F / #FFFFFF | Colore titolo mese. |
nav_bg_color | tuple RGB | #F5F5F7 / #2A2A2A | Sfondo barra navigazione. |
nav_button_bg_color | tuple RGB | #F5F5F7 / #2A2A2A | Sfondo pulsanti nav. |
nav_button_fg_color | tuple RGB | #007AFF / #4DA3FF | Colore icone nav. |
prev_text, today_text, next_text | str | "‹", "TODAY", "›" | Testi pulsanti. |
prev_button_bg_color, prev_button_fg_color, today_button_bg_color, today_button_fg_color, next_button_bg_color, next_button_fg_color | tuple RGB | vedi sopra | Colori specifici per ogni pulsante nav. |
weekday_bg_color, weekday_fg_color | tuple RGB | #FFFFFF / #1E1E1E, #8E8E93 / #A0A0A0 | Intestazioni giorni. |
day_bg_color, day_fg_color | tuple RGB | #FFFFFF / #1E1E1E, #1D1D1F / #FFFFFF | Celle giorni normali. |
day_disabled_bg_color, day_disabled_fg_color | tuple RGB | #FFFFFF / #1E1E1E, #C7C7CC / #555555 | Giorni fuori mese. |
day_today_bg_color, day_today_fg_color | tuple RGB | #007AFF / #4DA3FF, #FFFFFF | Giorno corrente. |
day_selected_bg_color, day_selected_fg_color | tuple RGB | #1D1D1F / #FFFFFF, #FFFFFF / #000000 | Giorno selezionato. |
footer_bg_color, footer_fg_color | tuple RGB | #FFFFFF / #1E1E1E, #8E8E93 / #A0A0A0 | Colori footer. |
info_text | str | "Calendar created by FastGUI" | Testo footer. |
january_text … december_text | str | "JANUARY"…"DECEMBER" | Nomi mesi. |
monday_text … sunday_text | str | "MON"…"SUN" | Nomi giorni abbreviati. |
week_start_monday | bool | True | La settimana inizia lunedì. |
show_footer | bool | True | Mostra/nasconde footer. |
Metodo .Logic()
| Parametro | Descrizione |
|---|---|
prev_command, next_command, today_command | Callback per pulsanti navigazione. |
day_command(date) | Chiamato quando si seleziona un giorno (riceve datetime.date). |
month_change_command(year, month) | Callback al cambio mese. |
week_start_monday, show_footer | Override delle impostazioni. |
Metodi pubblici aggiuntivi
get_selected_date()→ datetime.datego_to_date(d)→ sposta la vista a una dataset_info_text(testo)→ aggiorna footer
📘 Esempio CALENDAR
from FlashGui import CALENDAR
from datetime import date
def giorno_selezionato(d):
print(f"Hai scelto il {d}")
cal = CALENDAR(title="Calendario Eventi", size=(2,2), style="light")
cal.Edit(
week_start_monday=False,
monday_text="LUN",
tuesday_text="MAR",
info_text="Seleziona una data per l'evento",
day_today_bg_color=(200,100,50)
)
cal.Logic(day_command=giorno_selezionato)
cal.go_to_date(date(2025, 12, 25))
cal.run()
🪟 WINDOW – La tua tela bianca proporzionale
Layout proporzionale automatico: coordinate relative (0.0‑1.0) e font scalati. Ogni metodo Add... restituisce un oggetto widget con un metodo .Modify() per cambiare proprietà a runtime.
Costruttore
Stessi parametri degli altri componenti (title, size, color, icon, maximized, min_size, max_size, style).
➕ Metodi per aggiungere widget
Tutti i metodi accettano i parametri comuni relx, rely, relwidth, relheight (float tra 0 e 1) e opzionalmente font_scale, tooltip, enabled, visible, cursor, parent. Di seguito i dettagli specifici per ciascun widget.
| Metodo | Parametri specifici | Ritorna | Descrizione |
|---|---|---|---|
AddLabel(text, bold, fg, bg, font_scale, alignment, tooltip, enabled, visible, cursor, parent) |
alignment: "left", "center", "right" (default "left")bold: bool |
_WidgetHandle (wx.StaticText) |
Etichetta di testo. |
AddButton(text, command, bold, fg, bg, font_scale, tooltip, enabled, visible, cursor, parent) |
command: funzione senza argomentibold: bool |
_WidgetHandle (wx.Button) |
Pulsante. |
AddInput(text, hint, password, readonly, fg, bg, font_scale, tooltip, enabled, visible, cursor, parent) |
hint: testo placeholderpassword: bool (mostra •••)readonly: bool |
_WidgetHandle (wx.TextCtrl) |
Campo input riga singola. |
AddTextArea(text, readonly, fg, bg, font_scale, tooltip, enabled, visible, cursor, parent) |
readonly: bool |
_WidgetHandle (wx.TextCtrl multilinea) |
Area di testo. |
AddCounter(min_val, max_val, start, step, font_scale, tooltip, enabled, visible, cursor, parent) |
— | _WidgetHandle (wx.SpinCtrl) |
Contatore numerico. |
AddCalendar(command, tooltip, enabled, visible, cursor, parent) |
command: riceve wx.DateTime |
_WidgetHandle (wx.adv.CalendarCtrl) |
Calendario. |
AddSlider(min_val, max_val, start, command, orientation, tooltip, enabled, visible, cursor, parent) |
orientation: "horizontal" o "vertical"command: riceve il valore corrente (int) |
_WidgetHandle (wx.Slider) |
Slider. |
AddColorPicker(color, command, tooltip, enabled, visible, cursor, parent) |
command: riceve colore esadecimale (str) |
_WidgetHandle (wx.ColourPickerCtrl) |
Selettore colore. |
AddCheckBox(label, checked, command, font_scale, tooltip, enabled, visible, cursor, parent) |
command: riceve bool |
_WidgetHandle (wx.CheckBox) |
Checkbox. |
AddRadioButton(label, checked, command, font_scale, tooltip, enabled, visible, cursor, parent, group_start) |
command: riceve boolgroup_start: se True inizia un nuovo gruppo (default False, ma automaticamente gestito se non specificato) |
_WidgetHandle (wx.RadioButton) |
Radio button. |
AddComboBox(choices, value, command, font_scale, tooltip, enabled, visible, cursor, parent) |
command: riceve il valore selezionato (str) |
_WidgetHandle (wx.ComboBox) |
Menu a tendina editabile. |
AddListBox(choices, command, multiple, font_scale, tooltip, enabled, visible, cursor, parent) |
multiple: bool (selezione multipla)command: riceve il valore selezionato (str) o lista di valori se multipla |
_WidgetHandle (wx.ListBox) |
Lista di selezione. |
AddCanvas(bg, tooltip, enabled, visible, cursor, parent) |
bg: colore sfondo (default "white") |
_WidgetHandle (_CanvasPanel) |
Area di disegno. |
AddTabs(tooltip, enabled, bg, visible, cursor, parent) |
bg: colore sfondo tabs |
_WidgetHandle (_CustomTabs) |
Contenitore a schede personalizzato. |
AddPage(notebook, title, color, bg, active_fg, size_text) |
title: str, color: colore testo inattivo, bg: sfondo pagina, active_fg: colore testo attivo, size_text: fattore dimensione testo (default 1.0) |
_WidgetHandle (wx.Panel) |
Aggiunge una pagina a un notebook creato con AddTabs. |
🛠️ Metodi di utilità e modifica
Barra menu e status bar
AddMenuBar()→ crea barra menu.AddMenu(title)→ restituisce un wx.Menu.AddMenuItem(menu, label, command, shortcut)→ aggiunge voce con scorciatoia (es. "Ctrl+N").AddStatusBar(text, color, bg, highlight, text_size, height_scale, relx, rely, relwidth, relheight, font_scale)→ crea status bar personalizzabile con posizionamento proporzionale del testo.SetStatusText(testo, field=0)→ imposta testo status bar (se usata barra standard).
Timer e dialoghi
AddTimer(ms, command, one_shot=False)→ avvia un timer. Restituisce l'oggetto wx.Timer.StopTimer(timer)→ ferma e rimuove il timer.Message(testo, titolo="Message")→ messaggio informativo.AskSave(wildcard, default_dir)→ percorso o None.AskOpen(wildcard, default_dir)→ percorso o None.exit()→ chiude l'applicazione.
Manipolazione widget
EnableWidget(widget, enable=True)→ abilita/disabilita.ShowWidget(widget, show=True)→ mostra/nasconde (ricalcola layout).CanvasSetPen(canvas, color=None, width=None)→ imposta colore/spessore per canvas.CanvasClear(canvas, bg=None)→ pulisce canvas.
Il metodo .Modify() dei widget
Ogni widget restituito dai metodi Add... possiede un metodo .Modify(**kwargs) che permette di cambiare proprietà dopo la creazione. I parametri variano in base al tipo di widget, ma includono sempre relx, rely, relwidth, relheight, font_scale, tooltip, enabled, visible, cursor, bg, fg.
Esempi per tipo:
# Label
label = win.AddLabel("Ciao", relx=0.3, rely=0.4)
label.Modify(text="Nuovo testo", fg=(255,0,0), font_scale=1.5)
# Button
btn = win.AddButton("Click")
btn.Modify(text="Premi", bg=(100,200,100), command=nuova_funzione)
# Input / TextArea
inp = win.AddInput()
inp.Modify(text="Valore", hint="Inserisci...", readonly=True)
# Counter
cnt = win.AddCounter(min_val=1, max_val=10)
cnt.Modify(value=5, step=2)
# CheckBox / RadioButton
cb = win.AddCheckBox("Opzione")
cb.Modify(checked=True, text="Abilitato")
# ComboBox / ListBox
cbx = win.AddComboBox(choices=["A","B"])
cbx.Modify(choices=["X","Y","Z"], value="Y")
# Canvas
canvas = win.AddCanvas(bg="white")
canvas.Modify(bg=(200,220,240))
win.CanvasSetPen(canvas, color="blue", width=3)
win.CanvasClear(canvas, bg="lightgray")
📘 Esempi WINDOW
from FlashGui import WINDOW
win = WINDOW(title="Demo Base", size=(2,2))
win.AddLabel("Ciao Mondo!", relx=0.3, rely=0.4, relwidth=0.4, relheight=0.1)
win.AddButton("Click", command=lambda: win.Message("Ciao!"), relx=0.4, rely=0.6, relwidth=0.2, relheight=0.1)
win.run()
from FlashGui import WINDOW
win = WINDOW(title="Esempio Tabs", size=(2,2))
tabs = win.AddTabs(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.8)
pagina1 = win.AddPage(tabs, title="Home", bg="#FFFFFF")
win.AddLabel("Benvenuto nella prima scheda", parent=pagina1, relx=0.1, rely=0.4)
pagina2 = win.AddPage(tabs, title="Impostazioni", bg="#F0F0F0")
win.AddCheckBox("Opzione 1", parent=pagina2, relx=0.2, rely=0.2)
win.run()
🔁 La triade magica: run(), Edit(), Logic()
Ogni componente FlashGui espone questi tre metodi fondamentali:
.run()– Avvia il loop principale dell'applicazione (bloccante)..Edit(**kwargs)– Modifica l'aspetto: testi, colori, messaggi. Ogni componente ha i suoi parametri specifici (elencati sopra)..Logic(**kwargs)– Collega le tue funzioni agli eventi (click pulsanti, selezione voci di menu, ecc.).
⏱️ AddTimer() – comune a tutti i componenti
Tutti i componenti (CALCULATOR, NOTEPAD, PAINT, CLOCK, CALENDAR, WINDOW) possiedono il metodo AddTimer(ms, command) che avvia un timer periodico. Restituisce l'oggetto wx.Timer. In WINDOW è presente anche StopTimer(timer).
def aggiorna():
print("Timer scattato")
calc = CALCULATOR()
calc.AddTimer(1000, aggiorna) # ogni secondo
calc.run()
.Edit(...) → .Logic(...) → .run().