Toga er BeeWares Python-indfødte, OS-indfødte GUI-værktøjssæt.
Hvorfor Toga?
Toga er ikke verdens første widget-værktøjssæt - der er snesevis af andre muligheder. Så hvorfor bygge et nyt?
Indfødte widgets - ikke temaer
Toga bruger indbyggede systemwidgets, ikke temaer. Når du ser en Toga-app kører, ser den ikke bare ud som en indbygget app - det er en indbygget app. At anvende et operativsystem-inspireret tema oven på et generisk widgetsæt er en nem måde for en udvikler at opnå et mål på tværs af platforme mål, men det efterlader slutbrugeren med rodet.
Det er nemt at få øje på apps, der er bygget ved hjælp af tematiserede widgetsæt - det er dem, der ikke opfører sig helt som andre apps. Det er dem, der ikke opfører sig helt som alle andre apps. Widgets ser ikke helt rigtige ud, eller der er en menulinje i et vindue i en macOS-app. app. Temaer kan komme ret tæt på - men der er altid tegn på det.
Dertil kommer, at indbyggede widgets altid er hurtigere end en generisk widget. Når alt kommer til alt, bruger du indbygget systemkapacitet, der er blevet tunet og optimeret, ikke en tegnemotor, der er lagt oven på en generisk en generisk widget. De arver også alle den oprindelige platforms tilgængelighed, som f.eks. understøttelse af skærmlæsere og adaptive skriftstørrelser.
Abstraher de brede koncepter
Det er dog ikke nok bare at se ud som en native app - du skal også også føles som en indfødt app.
En "Afslut"-mulighed under en "Fil"-menu giver mening, hvis du skriver en Windows-app - men det er helt malplaceret, hvis du bruger OS X - muligheden for at Afslut-muligheden bør være under applikationsmenuen.
Og desuden - hvorfor skulle udvikleren overhovedet kode placeringen af en Quit mulighed alligevel? Alle apps i verden skal have en afslutningsmulighed, så hvorfor giver widget-værktøjssættet ikke en forudinstalleret afslutningsmulighed, ud af boksen?
Selvom Toga bruger 100% indbyggede systemwidgets, betyder det ikke, at Toga kun er bare en indpakning af systemets widgets. Hvor det er muligt, forsøger Toga at abstrahere de bredere koncepter, der ligger til grund for konstruktionen af GUI apps, og bygge en API til det. Så - hver Toga-app har det grundlæggende sæt af menupunkter, som du forventer af enhver app - Afslut, Om og så videre - alle på de steder, hvor du ville forvente at se dem i en indbygget app.
Når det drejer sig om widgets, er abstraktionen nogle gange enkel - en knap er jo en knap. en knap er jo en knap, uanset hvilken platform du er på. Men andre widgets bliver måske ikke eksponeret så bogstaveligt. Det, som Toga-API'en har til formål at eksponere, er et sæt mekanismer til at opnå UI-mål, ikke et bogstaveligt widget-sæt.
Python native
De fleste widget-værktøjssæt starter deres liv som et C- eller C++-lag, som derefter pakket ind i andre sprog. Resultatet er, at man ender med API'er, der smager som C eller C++.
Toga er designet fra bunden til at være et indbygget Python-widget værktøjssæt. Det betyder, at API'en er i stand til at udnytte funktioner på sprogniveau som generatorer og kontekstadministratorer på en måde, som en wrapper omkring et C bibliotek ikke ville være i stand til (i hvert fald ikke nemt).
Toga kører på Python 3. Den kører ikke på Python 2.
pip install og ikke mere
Toga sigter mod ikke at være mere end en pip-installation væk fra brug. Det kræver ikke kræver ikke kompilering af C-udvidelser. Der er ikke behov for at installere et binært supportbibliotek. Der er ikke behov for at ændre systemstier og miljøvariabler. Du skal bare installere det, importere det og begynde at skrive (eller køre) kode.
Omfavn mobilen
For 10 år siden betød det at være et widget-værktøjssæt på tværs af platforme at være tilgængeligt til Windows, OS X og Linux. I dag er mobil computing meget vigtigere. Men på trods af dette er der ikke mange gode muligheder til Python-programmering på mobile platforme, og mobil kodning på tværs af platforme kodning på tværs af platforme er stadig vanskelig. Toga har til formål at rette op på dette.
How to help
So, why is it called "Toga"?
Når man er i Rom, skal man gøre som romerne. Og hvad har en romer på? En toga!