- Tkinter ja GUIZero katavad lihtsad graafilised kasutajaliidesed; PyGame on mõeldud vidinateta multimeedia jaoks; EasyGUI on kiirete dialoogide jaoks.
- et apps Professionaalne ja skaleeritav PySide6/PyQt6 (Qt) pakub suurimat ökosüsteemi ja tööriistu.
- Kivy, Toga, wxPython, GTK ja Remi laiendavad valikuid vastavalt mobiilsele, natiivsele, GNOME keskkonnale või veebiliidesele.
Kui programmeerite sisse Python Ja kui te ei tea, milline on parim variant liidese seadistamiseks, on normaalne, et teil on valikute vahel kahtlusi. Tkinter, PyGame, GUIZero ja EasyGUIIgaüks neist sündis erinevate probleemide lahendamiseks: alates pikslite ja спрайtide joonistamisest tippkiirusel kuni kiirete dialoogide genereerimise või lihtsate akende loomiseni ilma aju raiskamata.
Selles juhendis leiate selge võrdluse ja lisaks kaardi teistest alternatiividest, mida meeskonnad ja kogukond tänapäeval kasutavad: PyQt/PySide (Qt), QML, Kivy, BeeWare/Toga, wxPython, PyGObject (GTK), Remi või PySimpleGUIMa räägin teile, mis teeb igaüht neist silmapaistvaks, mida peate teadma litsentsimise, installimise ja praktiliste kasutusjuhtude kohta, lisades kogukonna ja tehnilise dokumentatsiooni jagatud kõige olulisema teabe.
Millist probleemi iga tööriist lahendab?
Enne üksikasjadesse laskumist on oluline teada, millist eesmärki iga valik taotleb. Tkinter See on ametlik Pythoni graafikateek: see on kaasas Windows ja macOS-is ning Linux Tavaliselt nõuab see distributsiooni paketi installimist. Selle filosoofia on lihtne: klassikalised vidinad (nupud, tekstikastid, sakid, edenemisribad), paigutused ja Lõuend võimas 2D graafikaSee pole täielik raamistik, seega See ei kuulu standardvarustusse multimeedia, täiustatud graafika ega andmemudelite hulkaLisate need tükid standardse teeki või kolmanda osapoole tarkvara abil.
PyGame See on suunatud multimeediale ja mängudele: pakub otsest API-t pinnale joonistamiseks, спрайtide manipuleerimiseks ja heli esitamiseks SDL-i kaudu. See on ideaalne põhitsükli juhtimiseks ning renderdamise ja sündmuste kontseptsioonide õppimiseks; See ei sisalda natiivseid vidinaid, nagu menüüd, nupud või tekstikastid.Kui vajate operatsioonisüsteemi kompositsiooniga vorme või tekstisisestust, peate selle käsitsi rakendama või seadistama hübriidi teise graafilise kasutajaliidesega.
GUIZero (guizero) Lihtsusta Tkinterit õppimiseks ja kiireteks projektideks loodud API-ga. Tk() poolt Rakendus(), silt poolt Tekst ja see annab sulle selliseid kontrolle nagu Nupp, Aken, Pilt või eelnevalt tehtud dialoogiboksid (hoiatus, jah, info, vigaSee pakub ka väga lihtsat ruudustiku paigutust ja kasulikke funktsioone, näiteks Aknate kuvamine/peitmine või peaakna lukustamine, kui teine aken on aktiivne.
Lihtne kasutajaliidesOmalt poolt on selle eesmärk ultraminimalistlik disain: lihtsad modaalsed dialoogid (sõnumid, jah/ei küsimused, failivalik), mis kasutavad ära Tkinterit ilma sündmuste tsükli keerukust paljastamata. See on tõhus valik prototüübidsisemised utiliidid või skriptid, mis vajavad põhilist interaktsiooni ilma tervikliku rakenduse loomiseta.
Tkinter põhjalikumalt: lihtne, kaasaskantav ja võimsa Canvasiga

Kui soovite alustada millegagi, mis on juba teie süsteemis olemas, Tkinter on kindel valikWindowsi ja macOS-i puhul on see komplekteeritud Pythoniga; Debiani/Ubuntu puhul installitakse see tavaliselt repositooriumidest eraldi. See pakub klassikalist ja usaldusväärset vidinate komplekti, mis toetab täiustatud teemasid "teemastatud" vidinate (Ttk) kaudu, mis kaasajastab välimust, eriti Windowsis.
See ei ole "aku-ühes" raamistik nagu Qt: See ei kuulu standardvarustusse. andmebaasidmultimeedia või täiustatud vektorgraafikaKuid lihtsate, kaasaskantavate lauaarvuti tööriistade puhul töötab see suurepäraselt ja selle Lõuend Kui seda hästi kasutada, saab sellega liigutada hämmastavaid liideseid. Lisaks on sellel litsents Pythoni tarkvarafond (PSF) See on lubav, GPL-iga ühilduv ja sobib patenteeritud tarkvara jaoks, andes teile palju vabadust.
„Tere maailm” näited on väga lühikesed ja Linuxis peate lihtsalt installima Tk paketi, kui teil seda veel pole. Kui tulete teistest raamistikest, on teil hea meel teada saada, et Tkinter pakub paigutused pakettide ja ruudustikugaLisatud on vahekaardid, edenemisribad ja standardsed dialoogiboksid. Keerukama äriloogika jaoks peate kasutama väliseid mooduleid, kuid 80% töölaua utiliitide puhul on see enam kui piisav.
PyGame'i sügavus: täielik tsüklikontroll, null vidinat

PyGame on fantastiline, kui soovid ekraani ja mängutsükli üle täielikku kontrolli. Selle API abil saad hõlpsalt joonistada, спрайte animeerida ja helisid esitada. objektorienteeritud sprite'i arhitektuur See aitab stseeni korrastada. Siiski puudub sellel traditsioonilise kasutajaliidese natiivne tugi: puuduvad kasutusvalmis menüüd, nupud ega sisestuskastid.
Kas PyGame'is saab tekstikasti luua? Jah, aga see hõlmab järgmist: klaviatuurisündmuste toorandmete lugemineMärgi kompositsiooni haldamine ja glüüfide õigesse kohta maalimine on hea õppeharjutus, kuid kontorirakendustes või kasutajavormides muutub see keeruliseks. Nende ülesannete jaoks Soovitus on kombineerida või lülituda Tkinteri või mõne muu graafilise kasutajaliidese peale. natiivsete vidinatega.
Teine oluline probleem on peamine tsükkel. PyGame annab teile kontrolli selle üle. peasilmusmis on suurepärane neile, kes kasutavad mängumootoreid; seevastu enamik GUI-tööriistakomplekte palub teil registreerida tagasihelistusi ja lasta neil selle sündmuste tsükkel Halda kõike. Neid saab kombineerida (näiteks kasutada Tkinterit juhtpaneelide ja PyGame'i mängustseenide jaoks), aga see on lõppkasutaja jaoks tavaliselt keerulisem ega lahenda võimalikke probleeme. paigaldustakistused.
Kui multimeedia on sinu teema ja otsid "puhtamaid" Pythoni alternatiive, siis mõned inimesed lähevad üle... Pyglet mõningate võimaluste tõttu, mida PyGame ei kata, kuigi see jääb selle võrdluse ulatusest välja. Kui teil on jõudluse osas kahtlusi, saate kontrollige oma spetsiaalset graafikakaartiPuutetundlike ekraanide või mobiilseadmete puhul vaadake allolevat Kivy jaotist, sest see on teisest liigast.
GUIZero: kiireim viis õppimiseks ja prototüüpimiseks Tkinteriga

GUIZero on installitud koos pip installi guizero ja lihtsustab oluliselt saabas: selle asemel Tk() te kasutate Rakendus() ja selle asemel mainloop() helista kuva(). Eesmärk on see Olgu esimesed sammud otsekohesederiti haridusasutustes. See muutub silt poolt Tekst ja pakub selliseid juhtelemente nagu Nupp, Pilt, Aken, Slider, Loendikast, Menüüriba või see sõbralik Vahvel.
Üks tugev külg on ruudustiku paigutus koordinaatide tüübiga ruudustik=mis võimaldab teil minutitega paigutada nuppudest koosneva "klaviatuuri". Samuti saate avada teise akna (Aken), peida see ära või näita seda siis, kui see sulle sobib ja isegi blokeeri peaaken, kuni kasutaja sulgeb teise akna koos oota=TõsiSee on täpselt see, mida vajate võlurite või dialoogide jaoks, mis ei tohiks lubada teil ülejäänud liidest puudutada.
Dialoogibokside osas on see olemas hoiatama, krohv, info y vigaväga lihtsa API-ga. See pakub ka on_close meetod Rakendus peatab sulgemisprotsessi ja küsib kasutajalt, kas ta soovib väljuda, hävitades akna ainult siis, kui ta kinnitab. Kui kasutate Tkinterit, on üleminek minimaalne; kui olete uus, säästab see teile palju vaeva.
Lisaboonusena julgustab GUIZero loogikat visuaalsest eraldama lihtsate funktsioonide abil: näiteks nupu vajutamine Nupp kutsub funktsiooni, mis uuendab teksti väärtustSee sisaldab ka piltide tuge, värvihaldust ja muid põhilisi vidinaid. Selle eesmärk ei ole konkureerida Qt või GTK-ga; selle nišš on lihtsus ja ligipääsetavus.
EasyGUI: Lihtsad modaalsed dialoogid skriptide ja utiliitide jaoks

EasyGUI eesmärk on otse asja juurde jõuda, pakkudes põhidialoogid (sõnumid, jah/ei, tekstisisestus, failivalik) ilma sündmuste tsükliga maadlemata. See on kasulik, kui teie käsikiri Konsoolimäng vajab natuke kasutaja interaktsiooni ja te ei taha luua täiesti uut rakendust. Sisuliselt tugineb see Tkinterile ja sobib ideaalselt kiire prototüüpimine või sisemised tööriistad.
Selle nõrkus on ka tugevus: see ei sobi keerukate liideste, täiustatud menüüde ega keerukate paigutuste jaoks. Kui teie kasutusjuhtum laieneb, on loomulik üleminek liikuda edasi Tkinter või GUIZero (kui eelistad lihtsust) või suuremaid raamistikke nagu Qt, kui vajad professionaalset jõudu.
Kui vajad enamat: Qt, QML, Kivy, Toga, wxPython, GTK, Remi ja teised
Kui teie projekt kavatseb kasvada, on Qt raskekaallane. Koos PyQt või PySide Teil on ligipääs kogu raamistikule: natiivsed vidinad Windowsis, macOS-is ja Linuxis, MVC-tüüpi mudelid ja vaated (tabelid, puud, arvutustabelid), andmebaasidmultimeedia (taasesitus, efektid, loendid), vektorgraafika, trükkimine ja arhitektuur signaalid ja pesad mis lihtsustab suurte rakenduste loomist korduvkasutatavate komponentide abil.
Tööriistadega on kaasas ka: Qt looja See sisaldab WYSIWYG-disainerit liideste kiireks loomiseks. Litsentsides on olulisi erinevusi: PyQt oma tasuta versioonis kasutab GPLv3 (kui te ei osta kommertslitsentsi, peab teie rakendus olema GPL-litsentsiga), samas kui pyside on all LGPL ja see sobib paremini suletud lähtekoodiga tarkvaraga ilma lisakuludeta. Mõlemad pärivad Qt kahetise olemuse (avatud lähtekoodiga ja kommertslik), seega tasub oma konkreetse juhtumi üksikasju üle vaadata.
Qt ei ole lihtsalt vidinad. Koos Qt Quick/QML Sul on deklaratiivne keel sujuvate liideste jaoks, mis on väga kasulik puutetundlikud ekraanid, Raspberry Pi ja tarbeelektroonikaSa ühendad Pythoni loogika jaoks ja QML-i kasutajaliidese jaoks ning saad isegi kasutada manustatud JavaScripti animatsioonide ja sündmuste jaoks. See on kaasaegne viis "reaalajas" liideste loomiseks, ohverdamata raamistiku võimsust.
Kui teie eesmärk on mobiil ja puutetundlik reklaam, Pettunud See on sinu sõber. See on enamasti kirjutatud Pythonis, väga kohandatav ja töötab Windowsis, macOS-is, Linuxis, Android e iOSKasutajaliides on defineeritud järgmiselt: KvSee on deklaratiivne keel, mis sarnaneb QML-iga ja eraldab vaate loogikast. Sellel on laiendus nimega KivyMD mis pakub vidinatele materiaalse disaini stiili. Pea meeles, et Ta ei tunne end põliselanikuna. See töötab töölaual, aga puutetundlike rakenduste jaoks on see rõõm.
Platvormide kaupa täieliku sündimise kohta vaata BeeWare TogaToga kasutab operatsioonisüsteemi vidinaid, nii et teie rakendused kuvatakse igas operatsioonisüsteemis lokaalselt. BeeWare'i ökosüsteem lisab Mapp Natiivsetele API-dele ja eelkompileeritud Pythoni järkudele ligipääsevate teekide pakkimiseks ja levitamiseks, kus ametlikke installijaid pole. See on huvitav lahendus, kui soovite natiivrakendused ja platvormideülene juurutamine.
Teine küps alternatiiv on wxPythonSee hõlmab wxWidgetsi ja kasutab natiivseid vidinaid. See on töölaua tööriistade jaoks paindlik ja praktiline, kuigi sellel võib olla mõningaid puudusi. platvormispetsiifilised iseärasused ja selle abstraktsioonikiht on väiksem kui Qt. Praegu rakendatakse seda uuesti kujul wxPython PhoenixKui otsid midagi klassikalist ja kiiret, on see võimalus oma radaril püsida.
Kui teie fookus on GNOME töölaual, PyGObject (GTK+) See sobib ideaalselt. See võimaldab kaasaegseid ja adaptiivseid liideseid, mis järgivad HIG-i suuniseid, ning toetab konvergentsed rakendused (Linuxi töölaua- ja mobiiliversioon) ning sisaldab tööriistu nagu GNOME Builder ja Glade. Windowsi/macOS-i keskkond nõuab rohkem samme ja väljaspool GNOME-i võib rakendus tunduda vähem natiivne. Sellegipoolest on see võimas ja litsentseeritud. LGPL 2.1.
Pythonist pakutavate veebiliideste jaoks ilma HTML-i puudutamata, Remi See on ainulaadne ja kasulik. See renderdab brauseris liidese manustatud serveri abil ja on täielikult... platvormist sõltumatuIdeaalne Raspberry Pi või monitorita serverite jaoks. Märkus: see ei ole mõeldud mitme kasutaja isoleeritud seansside jaoks; kui kaks kasutajat ühenduvad, jagavad nad sama olekut. Lisaks Sellel puuduvad standardsed turvafunktsioonid. (Saate kaitsta kasutajanime/parooliga, aga täpsemaid reegleid ei rakendata).
Lõpuks PySimpleGUI See pakkus Tkinteri, Qt (PySide), wxPythoni ja Remi ühtse API alla. See teeb taustaprogrammide vahetamise impordi muutmise abil lihtsaks, aga... piirab juurdepääsu natiivsetele võimalustele ja selle sündmuste tsükkel Pythonis võib olla kitsaskohaks streaming või multimeedia. Tähtis: Rida 4 oli all LGPLv35 muudeti ärilitsentsiks ja vastavalt oma teatele Projekt peatati 2025. aastal.. Seal on kahvel alates 4. kuupäevast nn. FreeSimpleGUI mis säilitab LGPL-i.
Soovitused kasutusjuhtumi järgi
Kui teie eesmärk on tõsiseltvõetav ja skaleeritav töölauarakendus (teaduslik, inseneri-, multimeedia), Alusta PySide6 või PyQt6-gaQt pakub kõike ja kuigi õppimiskõver on olemas, kiirendab see reaalsetes projektides arendust. Kaasaegsete puutetundlike ekraanide või Raspberry Pi tüüpi seadmete puhul kaaluge... Qt Quick/QML o Pettunud olenevalt sellest, kas eelistate töölaua natiivsust või puutepõhist mitmeplatvormilist lähenemist.
Lihtsate ja kaasaskantavate utiliitide jaoks Tkinter See toimib suurepäraselt; kui soovite API-t sujuvamaks muuta ja kõverat vähendada, GUIZero See on väga praktiline. Millised on stsenaariumi minimaalsed dialoogid? Lihtne kasutajaliides See on elupäästja. Mängud või renderdamise ja sündmuste tundmaõppimine? PyGame See on hariv, teades, et sellel puuduvad vidinad; juhtimisliideste jaoks saate seda kombineerida Tkinteriga või minna Pygletisse.
Kui eelistate paketipõhise levitamise puhul platvormipõhist natiivset välimust ja kasutuskogemust, proovige BeeWare/Toga + portfellKui teie liides kasutab veebitehnoloogiaid, pywebview o CEF Python Need võimaldavad teil kasutada HTML-i/CSS-i/JS-i natiivses aknas ilma tervet välist brauserit seadistamata. Ja kui teie rakendus töötab serveris ilma monitorita ja teil on vaja ainult kasutajate brauserist ühenduse loomist, Remi See on lihtne lahendus (pidades silmas teie vaikimisi seansi piiranguid ja turvalisust).
Kirglik kirjanik baitide maailmast ja üldse tehnoloogiast. Mulle meeldib jagada oma teadmisi kirjutamise kaudu ja just seda ma selles ajaveebis teengi, näitan teile kõike kõige huvitavamat vidinate, tarkvara, riistvara, tehnoloogiliste suundumuste ja muu kohta. Minu eesmärk on aidata teil digimaailmas lihtsal ja meelelahutuslikul viisil navigeerida.