Jo pouziti wxWindows je monstrozni, ale porad me neni jasny, proc zrovna wx? V prvnim dile pisete ze z duvodu prenositelnosti, ale ja treba pouzivam v pythonu gtk a to je taky prenositelne a monstrozni (jinak je ale pro python jeste prenositelnejsi tcl/tk).
Proc jste ve skutecnosti vybrali wx?
Pekne pozadi aplikace:-)
wxWindows pro podporovane systemy pouziva jejich nativni GUI (v Linuxu si dokonce muzeme vybrat). GTK+ funguje i na widlich, ale je to jen (s urcitou mirou nadsazky) "emulace X". Navic wxW udajne pracuji i v MSW 3.11, coz je pry pricinou velmi, velmi oskliveho C++ API (nutnost podpory starych kompilatoru). To ale nas, programatory v Pythonu, namusi moc palit..:)
Předevsim je nutne zduraznit, ze to je veci vkusu v cem budete programovat GUI pro sve aplikace v pythonu. Pokud se vam dari v gtk tvorte v teto knihovne. Mimochodem na platforme Linux je wxWindows nadstavbou nad GTK. Dulezite je, ze je wxWindows napsana v cecku, potazmo z 99% v C++ a je tudis vyrazne nativni v pouzivani systemovych prostredku dane platformy operacniho systemu a jeho grafickeho prostredi. Oproti Tkinteru, PythonWin .... ma nesrovnatelne vice implementovanych grafickych prvku, je dusledne objektova a pokud se naucite programovat ve wxPython nebudete mit zadne problemy prevest sve GUI pro program v C++, protoze je vse stejne a prakticky existuji pouze syntakticke rozdily zapisu mezi pythonem a C++. Jinak semantika je absolutne stejna. A to uz stoji za to. Pokud se pokusite o totez s Tkinterem, tak budete muse vymyslet znovu "kolo".
ok. mate presvedcive argumenty. jen ze gtk je psane v C a ma C++ wraper. Takze to vypada, ze wx by mohly byt i do budoucna ten pravy multipatformni toolkit? Rozhodnuti psat v tom ci v tom, je vzdycky vec mimoradne obtiznosti a rozhodtuti ma dalekohsahle nasledky.
jak je to pri techto nativnich kodech s pouzivanim systemovych prostredku? Jsou vyrazne mensi nez ma java?
wx ma port i v C++ a neni zas takova prace to s dobrym
cross-compilerem prelozit na ruzne architektury.
Na Vas dotaz asi neexistuje jednoznacna odpoved. Asi jako kdyz budete chtit vedet zda je lepsi krestanstvi nebo islam, je to proste vec vlastniho presvedceni. Musite si zvolit sam. Muzete porovnat doposud publikovane se zapisem pro C++:
class MyApp: public wxApp
{
virtual bool OnInit();
};
........
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame("Projekt", wxPoint
(50,50), wxSize(650,400));
frame->show(TRUE);
SetTopWindow( frame );
return TRUE;
}
Neni to zas az o nicem neznamem, ze? Zminujete se o pouziti cross-compileru, ale uprimne receno, vite co Vam to udela s Vasim kodem? Napsal jste si to sam, nebo se musite spolehat na druhe, ze to udelali dle Vasich predstav? Kdo se bude komu prispusobovat?
Dale k Vasemu dotazu s Javou. Je to trochu zavadejici, protoze o wxPython nebo wxWindows se bavime pouze jako o GUI nadstavbe pro urcity jazyk at uz Python nebo C++, kdezto Vas dotaz zahrnuje problematiku cele Javy jako celku. Java ma take sve GUI rozhrani na jine bazi nez je wxWindows a je urcena pro zcela jine veci nez Python nebo C a C++. Doporucuji prostudovat wxWorkshop, ktery zahrnuje jak C++ tak Java IDE. Pravda naprogramovat se da prakticky vse ve vsem.:)
Dale k tem systemovym prostredkum. Zkuste s Tcl/Tk prostredi pristupovat k direktivam preprocesoru?? Nebo neznam Tcl/Tk obdobu pouziti wxConfigBase na Unixu, wxIniConfig na 16bit Win, wxRegConfig na 32bit Win s primym pristupem k registrum atd. Dalsi neznamou pro Tkinter je treba OBDC Classes. Zkuste naprogramovat GUI rozhrani pro tisk dokumentu jak pro Unix/Linux tak pro Win9x,NT. V Tkinteru neznam. Pro srovnani doporucuji prostudovat dokumentaci k wxWindows a publikaci od Johna E.Graysona "Python and Tkinter Programming", zcela vycerpavajici srovnani. A pro uplne vycerpani doporucuji smrknout nasledujici:
http://www-106.ibm.com/developerworks/library/l-wxwin.html
http://www.wxwindows.org/screen01.htm
http://www.wxwindows.org/screen03.htm
http://www.ligo.caltech.edu/~e2e/Software/docs/wxWindows2/docs/html/odbc/odbc.htm
Jenze ja na sve projekty preferuju racionalni uvahy pred presvedcenim. Kdyby to bylo naopak urcite nebudu progranmovat ani v pythonu, ani v C++ ani v tave.
kody nemusite opisovat vcera jsem studiu wx zdrojaku venoval dost casu, dneska uz je v debianu i ta 2.40 verze tak to budu mozna i zkouset. Jo kod me vazne neni neznamy, je to vsude stejne, jen se to jinak pise:-) Bohuzel vsechny moderni jazyky jsou prakticky stejne az na nejake jemnosti ktere nepouzivam...
k jave, kdy se pise nejaky vetsi projekt, tak se obycejne deli na ruzne casti jako treba na infrasturkutu zabezpecujici neco a komunikujici s vyssimi prikazy treba pres pipy a nad tim vsim je nejake graficke rozhrani. takze tak jsem to myslel, jak pak nejaky takovy vetsi balik bude svizny, pojedem na cem atd.
Dulezitost Tcl je predevsim v tom, ze funguje bez problemu jak na Linuxu tak na vsech ostatnich unixech. Je to sivce pomale, ale funkcni. Jetsli ma nejake OBDC hazi sva data na CORBU nebo umi pristupovat k dovicemu v procesoru je nezjaimave, na to si muzu vzdycky napsat C routinu.
Dokonce ani python ani java nemaji bezne integrovane prihlizce ruznych obrazkovych formatu (tedy prakticky vse krome png,gif nebo jpegu). Takze s tim se pocita. Krom toho se da vzdycky vybrat jazyk nebo prosterdi ktere neco nepodporuje co podporuji ostatni.
Pro me je role pythonu predvesim jako nadstavba (graficky nebo webovy frontedn) a spojeni pro jine
jazyky nebo systemove zdroje.