Jen pro úplnost bych ještě dodal NCurses pro tvorbu UI v textovém režimu, případně přímo npyscreen.
Měl jsem větší úspěch a lépe se mi pracovalo s urwid - http://urwid.org/
Také by nebylo od věci zmínit se, pro které verze Pythonu lze kterou knihovnu použít.
Python3 není podporován mimo jiné knihovnami knihovnami PyGTK a wxPython, což tyto knihovny pro použití dosti diskvalifikuje.
S knihovnou Tkinter mám zase špatnou zkušenost, že nechává memory leaky, takže se nehodí pro dlouhodobě běžící aplikace.
(16-April-2017) wxPython 4.0.0a1 is now available on PyPI. This is the first official release of the new Phoenix version of wxPython, including support for Python 2.7 and 3.4+, installation from PyPI, fully self-contained and relocatable so it can be installed in virtual environments, etc.
S tim PyGTK se asi pletes:
1.1. Dependencies
GTK+3
Python 2 (2.6 or later) or Python 3 (3.1 or later)
gobject-introspection
Viz
https://python-gtk-3-tutorial.readthedocs.io/en/latest/install.html#dependencies
S knihovnou Tkinter mám zase špatnou zkušenost, že nechává memory leaky, takže se nehodí pro dlouhodobě běžící aplikace.
Tak to je drsny! Mas vic informaci? Leakuje to na strane Pythonu (predpokladam), nebo Tk? Python (temer) nepouzivam, ale vola z nej Julia obcas knihovnu PyPlot na grafy a nutno rict, ze tam to na pametovy veci chcipe casto. (Dokonce mam pocit, jestli to nevyhniva prave v Tkinteru, ale nevim.)
To neni dobre polozena otazka. Mam zkusenosti s PyQt, kde jsem zazil situaci, kdy bylo nutno u slozitejsi aplikace pretnout napojeni struktur na Qt objekty, aby garbage collector dokazal uvolnit pamet. To znamena, ze PyQt mi opravdu za nejakych okolnosti v nejake verzi leakovalo pamet, ale nikdy jsem to nestavel jako obecne tvrzeni "PyQt leakuje". Tkinter urcite vetsine lidi soustavne neleakuje, protoze by se to vedelo a davno opravilo. Mozna nekomu za nejakych okolnosti nejaka pamet utece, ale to by se musel ukazat nejaky use case.
A ze Ti "poblje" Python terminal chybovyma hlaskama, jeste neznamena, ze za to muze on, kdyz k nemu pristupujes pres interface z Julie.
Tkinter leakuje v případě, že jsou dynamicky dělány a zase rušeny stromy prvků. Už si nevzpomínám správnou terminologii, ale když v okně dělám rámečky a v každém spoustu tlačítek a labelů, nestačí zrušit ten rámeček jako celek, ale je nutno napřed porušit všechny vnitřní tlačítka a labely. Pokud se opravdu vše správně zruší, tak to neleakuje.
Ne ze bych miloval Tkinter, ale to s tim leakovanim je silne tvrzeni.
Co to je dlouhodobe bezici aplikace?
V mem pripade mesic na nejakem dotykovem displeji v tovarne je naprosto bez problemu.
Zrovna sem nacpu sve drobne zkusenosti, ovsem upozornuji, ze jsem velmi rozmazlen z klikacich prostredi pro Windows, tj. Delphi/Lazarus, respektive C# s WinForms:
* Tkinter - jakztakz, ale jak uz nekdo psal, komponenty nejsou zrovna kdovijaky luxus. Vzdycky me irituje, kdyz chci panel se scrollbary, tak ne ze si u panelu vyberu scrollbary zadne/horizontalni/vertikalni/oba, ale opravdu si tam ty scrollbary musim napsat a nastavit je tak, aby byly provazany s panelem. Jako chapu, ze to asi umoznuje ruzna nestandardni kouzla, ale me obvykle staci standardni scrollbary.
* PyQt - GPL nebo za penize, coz je pro meho zamestnavatele nepruchozi.
* wx... - Zatim jsem v tom delal pouze jednu drobnost zadarmo, ale docela dobry. Co se mi moc libilo (v meritkach opensource/free/atd...), tak to je wxFormBuilder, coz se docela blizi me davne lasce Delphi. (Ale jeste furt tomu chybi ta zakladni vec, ze po dvojkliku na event to skoci do editoru a muzu psat handler pro dany event.)
Ostatni knihovny jsem zatim nezkousel a zatim zkouset nehodlam. Mam jine konicky, nez je zkouseni GUI v Pyhonu.
Velku namahu pri zispovani moznosti ste si teda nedal, pretoze pre Qt je tu napriklad aj PySide, pre komercne pouzitie uplne bez problemv puzitelny - viem to lebo som do verzie 1.x pripravoval oficialne windows balicky a robil nejake bezvyznamne patche, uz sa tomu nevenujem ale viem ze od verzie 2 uz PySide oficialne patri pod Qt projekty a planuje sa jeho zaradenie do Qt ekosystemu, v buducnosti sa mozte teda tesit ze Python bude popri C++ dalsi podporovany jazyk priamo autorom kniznice Qt!
Mnohe urcite zaujme https://github.com/vurtun/nuklear/ , popr. minimalisticky nastupce https://github.com/vurtun/quarks resici asi tak "vsechny" problemy "vsech" existujicich GUI knihoven (viz. popis problemu na https://gist.github.com/vurtun/65977fcff17e413721dbd1191cda719d a https://gist.github.com/vurtun/0bf28ba10d5cbf69c11f5ef638e3ca45 ).
Hm, tedka koukam, ze bindingy pro Python nejsou referencovane - zvlastni, protoze je docela trivialni je udelat (a budou dobre pouzitelne, i kdyby melo jit o copy-paste ostatnich existujicich bindingu).
Tento druh "immediate mode UI" me zaujal. Koukal jsem na repozitar a komentare presne tohoto autora asi pred rokem.
Bohuzel asi nejsem dost chytrej na to, abych rychle odhalil, jestli tenhle pristup ve vysledku neco usnadni.
Potrebuju v brzku vyresit "pristrojova" GUI, neco jako voltmetr, osciloskop, autoradio, pokojovy termostat (priklad, jakeho druhu ta GUI budou). Zkousel jsem premejslet, jak by vypadal kod v tom immediate GUI a nejak mi pripadalo, ze to nakonec v klasickym stromu GUI prvku a systemu udalosti a zpetnych volani bude elegantnejsi.
Mas nejakej priklad pouziti techhle GUI, kde by bylo videt, jak s tim ucinne pracovat? Pripada mi to dosud jako neuzitecnej ulet, nez jako rozumnej prostredek.
Je některá z těch knihoven schopna vytvořit kromě aplikace pro Windows, Linux, Android a iOS i webovou aplikaci, tak aby běžela na vlastním www/aplikačním serveru, nebo např. na serveru Apache a byla přístupná přes běžný WWW browser (Firefox, Chrome, Safari, IE ...)?
Potřebuji udělat aplikaci, která se ve firmě bude využívat přes WWW browser, ale je několik uživatelů kteří by ji využili i offline (notebook a mobil). Je mi jasné, že pro offline režim bych musel řešit synchronizaci dat, ale to je řešitelné ...
V elektronu můžete psát klient-server aplikaci. Serverová část může být v pythonu.
https://www.fyears.org/2015/06/electron-as-gui-of-python-apps.html
Určitě je to jednodušší, než cpát newebovou technologii na web.
Ach jo, asi neumím správně popsat problém ...
co chci:
- jednu codebase /ne mix JS, Pythonu a ještě velké části psát dvakrát/
- webovou aplikaci která nepotřebuje na klientský stroj nic instalovat ani spouštět (chci dát uživatelům jen URL pro otevření v browseru)
---- to Electron neumí (ten umí jen spustit apl. s webview, ale neumí vytvořit TU webaplikaci)
---- vypadá to, že to umí remi a PyJs
- OFFLINE aplikaci, ze stejného zdrojáku - serverovou část si táhne s sebou
---- to Electron umí
---- vypadá to, že to umí remi a PyJs i když ne tak hladce jako Electron ...
- nepotřebuji "desktop specifické featury", stačí mi několik forumlářů pro vstup/výstup a za nima logika, ale potřebuji to na webu ale i offline
v tom případě by možná stačila offline webová aplikace https://www.zdrojak.cz/clanky/html5-offline-webove-aplikace/
v tom pripade i Pyglet: https://mojefedora.cz/multimedialni-knihovna-pyglet/
jenze jak v Pygame tak i v Pygletu je nutny si to GUIcko udelat od zacatku sam (coz zase neni spatne na pochopeni, jak to uvnitr funguje, ale L&F to moc kompatibilni mit nebude :)
Ja si presne tohle napsal v tkinteru a jsem spokojeny :) Po tapnuti kamkoliv na obrazovku (original 7") se zobrazi ikonky kde si (prozatim jen tohle) muzu zobrazit posledni radarovou mapu pro mou oblast, posledni snimky z druzice (gif), nebo si moje mala dcerka muze sama pustit dil "krtecka", popripade ovladat mpd.
chtel jsem jeste vlozit odkaz na fotku toho meho vytvoru, ale root mi ji nechce dovolit :( https://tinyurl.com/ychh68w3
Nevim, jestli wxW* od dob, kdy jsem se to snazil pouzit, nejak zasadne zmenilo koncept, ale:
v roce 2002-3 jsem vybiral nejakej tk, kterej by byl C bez ++ a z nejakyho (asi blbyho) duvodu jsem nevybral Gtk, ale zaujalo me wx. Tehdy to bylo postaveny na myslence, ze vsechny prvky budou nativni a wx API to nejak sjednoti. Urcite zajimava myslenka, ale prilis odvazna; chodilo to mizerne a bylo evidentni, ze tomu wx dela velikej problem usmirit na ruznejch platformach jinak se chovajici prvky. Kod byl taky dost humac, milion maker. Zdrhnul jsem od toho.
Naproti tomu Tk me vzdy fascinovalo jednoduchosti, snad jen skoda, ze tam chybej pokrocilejsi UI prvky; konkretne jsem premejslel nad prvkama typu tabulka nebo oteviratelnej stromovej seznam (oboji delany tak, ze je naalokovan jen jeden prvek, kterej se necha opakovane vykreslit na jinou souradnici, aby to nezralo giga pameti pro velky tabulky/seznamy) a to se priznam, ze mi pripadalo v Tk jako tezko dosazitelnej cil.
Popravdě jsem to dlouho nezkoušel, takže neznám dnešní stav, ale pro Tk existuje Tix:
https://docs.python.org/2/library/tix.html
Ten například ten strom (důležitý widget) obsahuje.
preboha! kazdy tu pise ze problem Qt je licencia ale pozrel si vobec niekto z vas toto https://wiki.qt.io/About_PySide
PySide is licensed under the LGPL version 2.1 license, allowing both Free/Open source software and proprietary software development
příště určitě budou, slibuju :) Do tohoto článku jsem nic nedával, protože pro první popisované knihovny jsou ty obrázky strašně nudné a prakticky shodné - maličkaté okno a v něm krátký text, žádné efekty, nic. Takže se rozdíly v L&F nedají poznat (jo v době, kdy Tkinter používal Motif, tak to bylo poznat, teď už prakticky ne).
Kompletní sada widgetů pro terminálové aplikace má npyscreen vybudovaný nad NCurses, http://npyscreen.readthedocs.io/introduction.html
Zminka o Pyjamas mi prisla dost zajimava. Pochopil jsem to tak, ze je stejnej kod pro desktop and stejnej pro ovladan skrz browser. Ale - pochopil jsem to dobre?
Projizdim web, youtube - vsechny veci o pyjamas mi pripadaji jako generovany pomoci automatu. Zadnej pruzracnej priklad/ukazka.... si to nepujde.
Vetšina těch toolkitů skutečně vznikla už "dávno" (on dokonce i Python oslavil čtvrtstoletí existence), ale na desktopové GUI se pořád používají, protože zase tolik jiných možností není (kromě PyjamasDesktopu a Kivy, ale ty jsou pro trošku odlišné aplikace a odlišné platformy).
Kromě dnes již zastaralé PyGTK se navíc všechny zmiňované toolkity stále vyvíjí a jsou udržované v repech, takže to není něco na způsob Motifu, MFC nebo OWL.
GTK3 v prohlížeči.
https://developer.gnome.org/gtk3/stable/gtk-broadway.html