Po dvaceti letech skončil leader japonské SUMO (SUpport.MOzilla.org) komunity Marsf. Důvodem bylo nasazení sumobota, který nedodržuje nastavené postupy a hrubě zasahuje do překladů i archivů. Marsf zároveň zakázal použití svých příspěvků a dat k učení sumobota a AI a požádal o vyřazení svých dat ze všech učebních dat.
Úřad pro ochranu hospodářské soutěže zahajuje sektorové šetření v oblasti mobilních telekomunikačních služeb poskytovaných domácnostem v České republice. Z poznatků získaných na základě prvotní analýzy provedené ve spolupráci s Českým telekomunikačním úřadem (ČTÚ) ÚOHS zjistil, že vzájemné vztahy mezi operátory je zapotřebí detailněji prověřit kvůli možné nefunkčnosti některých aspektů konkurence na trzích, na nichž roste tržní podíl klíčových hráčů a naopak klesá význam nezávislých virtuálních operátorů.
Různé audity bezpečnostních systémů pařížského muzea Louvre odhalily závažné problémy v oblasti kybernetické bezpečnosti a tyto problémy přetrvávaly déle než deset let. Jeden z těchto auditů, který v roce 2014 provedla francouzská národní agentura pro kybernetickou bezpečnost, například ukázal, že heslo do kamerového systému muzea bylo „Louvre“. 😀
Z upstreamu GNOME Mutter byl zcela odstraněn backend X11. GNOME 50 tedy poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.
Byl publikován plán na odstranění XSLT z webových prohlížečů Chrome a Chromium. S odstraněním XSLT souhlasí také vývojáři Firefoxu a WebKit. Důvodem jsou bezpečnostní rizika a klesající využití v moderním webovém vývoji.
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.3.0. Přehled novinek v poznámkách k vydání.
Organizace Open Container Initiative (OCI) (Wikipedie), projekt nadace Linux Foundation, vydala Runtime Specification 1.3 (pdf), tj. novou verzi specifikace kontejnerového běhového prostředí. Hlavní novinkou je podpora FreeBSD.
Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.
Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.
Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Letos je pro vás otevře 26. listopadu v 16 hodin v pražském Karlíně. Vítáni jsou všichni, kdo se chtějí dozvědět více o práci vývojářů, prostředí ve kterém pracují a o místní firemní kultuře. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem inženýři v Praze pracují, jak spolupracují se zákazníky, partnery i studenty, proč mají rádi open source a co
… více »Úvod do Pythonu
Print
Proměnné
Komentáře
Datové typy v Pythonu
Čísla
Text - string
Pole - list
Úvod do PyQt
Importujeme PyQt
Vytváříme okno
Závěr
V této sérii článků bych vás chtěl seznámit s Pythonem a jedním z jeho modulů zvaným PyQt, který umožňuje spojení Qt a Pythonu. Většina distribucí by měla Python i PyQt obsahovat. Pokud je zrovna vaše distribuce neobsahuje, můžete PyQt i Python zdarma stáhnout a nainstalovat podle návodu.
Python je interpretovaný, objektově orientovaný skriptovací jazyk. Má mnoho modulů, které obsahují funkce například pro práci s archivy, práci s emaily nebo pro tvorbu grafického rozhraní (TK, PyQt, WxWidgets...). Cílem seriálu je, aby si i člověk, který v Pythonu ještě neprogramoval, uměl udělat jednoduchý grafický program a pochopil základní principy Pythonu. V tomto díle si probereme základní datové typy Pythonu a řekneme si, jak vytvořit okno.
Pokud máte Python nainstalován, spustíte ho příkazem
python. Před vámi se objeví jeho interpret, do kterého již
můžete zadávat příkazy. Pokud byste chtěli spustit příkazy přímo z
příkazové řádky, můžete použít parametr -c Pythonu.
python -c 'print "Hello world"'
Další možností je spustit soubor. Ten spustíte jednoduchým příkazem
python soubor.py. My v dnešním úvodu budeme používat zatím
pouze první způsob spuštění. Znaky >>> signalizují
vstup interpretu.
Jak jste si možná již všimli, Python používá pro výstup na obrazovku
příkaz print. Pokud chcete zobrazit text, musíte jej uzavřít
do jednoduchých nebo dvojitých uvozovek. Takže například print "hello
world" nebo print 'hello world' zobrazí text
hello world.
Proměnnou vytvoříme stejně jako v ostatních jazycích pomocí operátoru
"=". Pokud chcete například uložit do proměnné cislo číslo 5,
můžete tak udělat kódem cislo=5. Typ proměnné určuje až její
hodnota. Proto můžeme do jedné proměnné uložit text a následně například
číslo. V C/C++ toto není možné. Vidět to můžete na následujícím
příkladu.
>>> a="text"
>>> print a
text
>>> a=17
>>> print a*5
85
Komentáře v Pythonu můžeme vytvářet pomocí znaku #. Vše, co
je za ním, je bráno jako komentář. Příklady komentářů můžete vidět v
některých z dalších příkladů.
Čísla můžeme mezi sebou sčítat, odčítat, dělit a násobit stejně jako ve většině jiných jazyků. Myslím, že za vše bude mluvit následující přiklad.
>>> 1+1
2
>>> 121/11
11
>>> 11*11
121
>>> (8+2)*10/10
10
>>> 7/3
1
>>> a=1 # Do promenne "a" ulozime cislo 1
>>> a
1
>>> a+1
2
>>> a*5-6
-1
V následujícím příkladu jsme používali pouze čísla celá. Proto se například u 7/3 automaticky zrušila desetinná místa. Samozřejmě v Pythonu existují i desetinná čísla a při výpočtech s nimi se celá čísla mění na čísla desetinná.
>>> 3.75/5
0.75
>>> 7.0/3
2.3333333333333335
>>> (1.3*5)/3.5
1.8571428571428572
Python podporuje i komplexní a imaginární čísla, ale pro začátek pro nás nejsou užitečná, takže si o nich povíme později.
Text se v Pythonu ohraničuje jednoduchými nebo dvojitými uvozovkami.
Texty můžeme spojovat pomocí operátoru +. Můžeme jednoduše přetypovat číslo
nebo pole na text pomocí funkce str(objekt_k_pretypovani). V
textech můžeme používat zaužívané znaky jako je třeba konec řádku ("\n")
nebo obrácené lomítko ("\\"). Při vypisování textu funkcí
print můžeme vypsat více textových proměnných ještě tak, že je
oddělíme čárkou. V tom případě bude čárka ve výsledku nahrazena mezerou.
Zase uvedu příklad.
>>> print "hello "+'world'
hello world
>>> print str(1+2)
3
>>> print "hello \" WORLD \"", str(2*2)
hello " WORLD " 4
>>> a="hello "+'world'
>>> print "hello world",a
hello world hello world
Text můžeme i opakovat tak, že ho jednoduše vynásobíme :-) (operátor "*").
>>> a="hello world "
>>> print a*3
hello world hello world hello world
Text je v Pythonu indexován podobně jako v C. Lze tedy přistupovat k jednotlivým znakům i částem textu. Nesmíme u indexování zapomenout na to, že první znak textu je indexován jako 0.
>>> a="hello world"
>>> print a[0] # vypise 1. znak textu
h
>>> print a[2:4] # vypise 3. a 4. znak textu
ll
>>> print a[2:-2] # vypise vse od 3. az po 2. znak od konce
textu
llo wor
>>> print a[-2] # vypise 2. znak od konce
l
>>> print a[:-2] # vypise vse az po 2. znak od konce textu
hello wor
>>> print a[2:] # vypise vse od 3. znaku
llo world
>>> print a[-2:] # vypise vse od 2. znaku od konce textu
ld
Práce s poli je podobná jako indexování textů, ale místo znaků můžeme v polích uchovávat celé řetězce nebo čísla. K polím je v Pythonu přidružena celá řada funkcí například pro seřazení pole, nalezení položky v poli atd. O těch bychom si ale pověděli v některém z dalších dílů.
>>> a=["hello","world","ahoj","svete"]
>>> a
['hello', 'world', 'ahoj', 'svete']
>>> a[0]
'hello'
>>> a[:2]
['hello', 'world']
>>> a+["dalsi text"]
['hello', 'world', 'ahoj', 'svete', 'dalsi text']
>>> a
['hello', 'world', 'ahoj', 'svete']
V úvodu do PyQt se naučíme importovat PyQt modul. To znamená, že se načtou všechny funkce PyQt a my je budeme moci používat. Poté si řekneme o funkci pro vytvoření okna a vytvoříme si jednoduché prázdné okno.

Importování PyQt provedeme pomocí příkazu from qt import *.
Tento řádek importuje vše z modulu qt. Pokud se objevila po zadání tohoto
příkazu chyba, nemáte PyQt správně nainstalován.
Nejprve musíme vytvořit samotný objekt aplikace. To zajistí funkce
QApplication(sys.argv). QApplication si žádá parametry z
příkazové řádky. Pro jednoduchost nebudeme používat parametry z příkazové
řádky, ale dáme funkci QApplication() pouze prázdné pole.
app=QApplication([])
Dále musíme vytvořit okno naší aplikace funkcí
QMainWindow().
win=QMainWindow()
Okno zobrazíme. Okno se zobrazí pouze v paměti, ale ještě ne na obrazovce.
win.show()
Nyní zajistíme, aby se po uzavření okna zavřela celá aplikace a nestála
dále v paměti. Tento řádek si vysvětlíme až příště, ale zkráceně jde o to,
že když aplikace ("app") řekne (zavolá signál), že jsou všechna okna
uzavřena, tak se aplikace ("app") vypne (quit()).
app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
Nakonec aplikaci spustíme a okno se zobrazí.
app.exec_loop()
Můžete si přečíst celý záznam z interpreteru.
>>> from qt import *
>>> app=QApplication([])
>>> win=QMainWindow()
>>> win.show()
>>> app.connect(app, SIGNAL("lastWindowClosed()"), app,
SLOT("quit()"))
True
>>> app.exec_loop()
0
Pokud byste dali příkazy, které jste zadávali do interpreteru, do
souboru, můžete ho pak spustit příkazem
python soubor.py.
V dalším díle si povíme o podmínkách a cyklech, naučíme se do okna vepisovat text a vůbec si o Pythonu a PyQt budeme povídat hlouběji než v dnešním "úvodním" díle.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Zatím to chápu dokonce i já.
Narážel na to, že komentátor v Quake3Arena hlásí: "two frags left, one frag left". Máš to přesně tak napsaný.
Jestli někdo ví, co se řve v QIII, tak jsem to já.
Proto to tam mám napsaný.
Ale je to třeba i v Nexuizu.
PS: You are tied for the lead. 
Jinak - Python všichni umíme, přejděme k věciPython všichni umíme? O tom ani nevím.
Každopádně PyQt je pro mě hodně zajímavý. Python - tak oblíbenej jazyk, navíc prý "pěknej", moderní a taky se nemusí kompilovat (pro to určitě existuje výraz, ale zrovna mě nenapadá). No a Qt - oblíbenej toolkit. Protože jsem zarytej KDE-user.
Takže jsem moc rád za tenhle seriál.
...a taky se nemusí kompilovat (pro to určitě existuje výraz, ale zrovna mě nenapadá)...interpretovaný
), Java(Sun), C#(obvykle Mono).
... python pyconfig.py >> config.h lwc seg-malloc.c+ > cdir/seg-malloc.c /bin/sh: lwc: command not found make[1]: *** [cdir/seg-malloc.c] Error 127 make[1]: Leaving directory `/home/david/compile/hmmm/toolchain/pyvm' make: *** [all] Error 2a ani s pomocí Google nedám dohromady kde to sakra seženu.
PATH=$PATH:~/bin a znova make, je tu ale další chyba...
gcc -c -O3 -Wall -Wno-parentheses cdir/IO.c -o objdir/IO.o cdir/IO.c:28: error: conflicting types for 'malloc' cdir/IO.c:28: error: conflicting types for 'malloc' make[1]: *** [objdir/IO.o] Error 1 make[1]: Leaving directory `/home/david/compile/hmmm/toolchain/pyvm' make: *** [all] Error 2Nějak mi to není přáno... Každopádně tam píšou, že je to otestovaný jen na x86 (asi 32bit) a že pokud to chci kompilovat na jiné architektuře, mám raději počkat na další verze...
>>> import py_compile
>>> compile('test.py')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: compile() takes at least 3 arguments (1 given)
>>> compile('test.py, test.pyc')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: compile() takes at least 3 arguments (1 given):/ podle manuálu by měl stačit jeden argument... Jde mi z toho hlava kolem.
py_compile.compile(). Viď dokumentácia k modulom.
from py_compile import compile
compile('/home/david/devel/python/test.py')Takhle je to lepší.
Díky za pomoc.
A zkusit si to zkompilovat, ale jinak to dělat nebudu...
#! /usr/bin/env python # -*- coding: UTF-8 -*- import sys, py_compile py_compile.compile(sys.argv[1])a pro adresář:
#! /usr/bin/env python # -*- coding: UTF-8 -*- import sys, compileall compileall.compile_dir(sys.argv[1], 1)To jen kdyby to tu někdo hledal.
__init__() nie je nič iné ako konštruktor.
Takže ešte raz poviem, to čo som chcel povedať:
V jazykoch ako Java sa nový objekt vytvára nasledovným spôsobom:
1) vytvorý sa nový objekt
2) zavolá sa naňho konštruktor
V pythone sa to robí presne tak isto, ibaže je to schované pod "volanie triedy" a konštruktorom skutočne je funkcia __init__. __init__? A videli ste už funkciu __init__ použitú inak ako konštruktor (teda funkciu, ktorá má objekt dostať do správneho začiatočného stavu)? Nehovorím, že výnimky sa nenájdu a hneď ma aj nejaké napadli, ale to sú skutočne výnimky.
Po druhé: to, že python nejaký typ volá, nám ešte vôbec nepovie, čo sa s ním deje. Keď budeme volať funkciu, zrejme sa bude diať niečo iné, ako keď budeme volať triedu. Chcel som poukázať na to, že pod povrchom volania triedy nie je žiadny iný proces ako v Java, C#, atď.
A po tretie: keď už chceme hovoriť o OOP, tak hovorme o Smalltalku. Python nie je OOP jazyk v pravom slova zmysle, ale vďaka tomu, ako bol navrhnutý umožňuje pohodlne programovať objektovo, ale rovnako pohodlne sa v ňom dá programovať aj procedurálne a v budúcnosti zrejme aj funkcionálne.
Aby som to zhrnul, python netreba nijako mystifikovať. Je to síce dobrý jazyk s peknými vlastnosťami, ale pod povrchom leží staré dobré C
Nevytvari sice objekt ve smyslu alokace pameti Narozdil od metody __new__(), ze? Neni tedy spis konstruktor toto? A dostavame se opet k tomu, co jsem rikal. Hledat analogii u oop jazyku implementovanych jinak je silne zavadejici a vede k chybnemu chapani, proto je nevhodne.Milý pane, ste trochu vedľa. Konštruktorom sa v OOP (nie len v Jave, C#, ale v OOP všeobecne) chápe funkcia, ktorá inicializuje objekt ako taký, nestará sa o nízkoúrovňové procesy. Vytvorením objektu sa potom chápe jeho vytvorenie v pamäti (new) a inicializácia (init). Ešte raz to zopakujem, jediný rozdiel oproti Jave je syntaktický: v Pythone napíšeme
= Class(); a v Jave = new Class(), ale v oboch jazykoch vedú tieto výrazy k rovnakému procesu.
A k akému chybnému chápaniu vedie pomenovať funkciu ktorá sa stará o inicializáciu objektu? Jediné chybné chápanie, ktoré som si všimol je vaše, ale pramení zjavne z toho, že neviete, čo to konštruktor je. A to ma dosť zaráža.
Samozrejme, že v čistom OOP existujú len správy, ale Python nie je čistý OOP jazyk.
Konkrétne, pozrite si tento článok. Podstata je, že v staticky typovaných jazykoch exituje len jeden spôsob vytvorenia objektu: volaním konštruktoru, kdežto v čistých OOP stačí poslať triede (ešte nevytvorenému objektu) ľubovoľnú správu a objekt sa vytvorí popritom. AFAIK v pythone niečo takéto nie je možné, ale musí sa najprv objekt vytvoriť a až potom môžeme volať niektorú jeho metódu, i.e.:
ob = Object()
ob.show()
ale nie
ob = Object.show()
a teda v tomto ohľade je pythone takmer rovnaký ako Java, C#. Rovnako sa pritom volá konštruktor (opäť v mojom chápaní) objektu lenže v pythone sa nazýva __init__ a nie Object().
Jinak OOP se doporučuji učit ve Scheme. Tam to pořádně člověk pochopí
def x(a, b):
return a+b
print x(1, 2)
LZE! pokud mam napriklad funkci, ktera jako parametr ocekava funkci, tak tam misto toho muzu klidne soupnout tridu. Oboji jsou to volatelne objekty a je mozne je zamenovat.
Vyborne, tak si to predvedeme prakticky, treba se naucim neco noveho:
def cmpfun(a, b):
if a>b: return 1
if b>a: return -1
return 0
print [1,5,9,7,5,3].sort(cmpfun)
Metoda sort jako parametr ocekava funkci. Predavam funkci cmpfun, prosim o jeji nahrazeni tridou.
metoda __new__ je mnohem nizkourovnovejsi nez __init__. je to spis takovej hack.
Neni to hack a je na stejne urovni jako init, jen se tak casto neprekryva. Vase teorie zacina dostavat trhliny
, a vam chybi poradny argument.
uz jenom cekam, kdy prohlasite za konstruktor C funkci malloc..
To se tedy nacekate. Ani toto neni poradny argument, povazuji to zatim za nezodpovezene.
kdyz vezmu v uvahu jen vas aktualni prispevek, tak napriklad z tohoto: "Tridu s funkci nelze zamenovat. To zduraznuji." mam dojem, ze si python pletete napriklad se silne typovanou Javou, nebo dokonce s C++
Cim dal lepsi.
1) co se tyce zamenovani, pockame na vase reseni prikladu, jestli se vam podari funkci zamenit tridou.
2) bylo by slusne nebrat aktualni prispevek, ktery jste ani nepochopil, ale to, co vas k tomu tvrzeni vedlo. existuje neco takoveho?
3) python je silne typovany, ted si to zas pletete se statickym typovanim
4) kontrolni otazka, je C++ silne typovany jazyk?
##########################################
def x(a, b):
return a+b
print x(1, 2)
>>> class x:
... def __init__(self, a, b):
... self.c = a+b
... def __str__(self):
... return str(self.c)
...
>>> print x(1, 2)
3
# i kdyz pri jinych prilezitostech by bylo potreba napr.
# doplnit metodu __int__ a podobne,
# ale o to v OOP v pojeti pythonu jde. muzete objekty
# zamenovat. pokud rozumi pozadovanym zpravam...
##########################################
>>> def cmpfun(a, b):
... if a>b: return 1
... if b>a: return -1
... return 0
...
>>> print [1,5,9,7,5,3].sort(cmpfun)
None
# predpokladam ze jste si jen neuvedomil, ze metoda sort
# pracuje s puvodnim polem a myslel jste toto:
# a = [1,5,9,7,5,3]
# a.sort(cmpfun)
# print a
######################################################
>>> class cmpfun(int):
... def __new__(cls, a = 0, b = 0):
... if a > b: return int.__new__(cls, 1)
... if a < b: return int.__new__(cls, -1)
... return int.__new__(cls, 0)
...
>>> a = [1,5,9,7,5,3]
>>> a.sort(cmpfun)
>>> print a
[1, 3, 5, 5, 7, 9]
>>>
##########################################################
takze sem prave prokazal, ze funkce a tridy jsou zamenitelny....
mam pocit, ze OOP v pythonu (a podobnych jazycich, napr. smalltalk) prilis nerozumite. Nikoho toti nezajima, ze se jedna o uplne jiny objekt, kdyz shodne reaguje na stejne zpravy....
> Neni to hack a je na stejne urovni jako init, jen se tak casto neprekryva. Vase teorie zacina dostavat trhliny
, a vam chybi poradny argument.
na tom, ze je to hack trvam
> 3) python je silne typovany, ted si to zas pletete se statickym typovanim
jo, to sem poplet. omlouvam se.
> 4) kontrolni otazka, je C++ silne typovany jazyk?
castecne. predpokladejme:
class A { public: int x; };
class B { public: float y; };
void f() {
A* a;
B* b;
*a = *b; // nemozne
a = (A*)b; // mozne bez jakekoli kontroly typu.
// proste se nastavi ukazatel na adresu
// b (obcas se to ale hodi ;))
}
. Ja vsak trvam na tom, ze to hack neni, bez toho byste nemohl delat prave takove veci. Mozna by bylo ale dobre si nejprve definovat co je to hack.
Ad C++, ja jsem toho nazoru, ze silne typovany neni
, protoze umoznuje scitat hrusky s jabkama, dedictvi po C.
Stale stojim o vysvetleni toho, proc se domnivate, ze si python pletu se statickymi jazyky, i kdyz uz zacinam tusit, ze jde o nedorozumneni a ze je to kvuli tomu, ze si pod tvrzenim, ze funkce a tridy nejsou zamenitelne predstavujem kazdy neco jineho.
Pisu trochu zkratkobite, ale to proto, ze to vsechno pracne vytukavam na pda. Jinak co jsem chtel rict tim druhym prikladem jste odhadl spravne, taky slo pouzit sorted().
. prikaz print vola metodu __str__ jak u puvodniho intu, tak i u myho objektu. takze jsou zamenitelny (v tomhle pripade)
> Stale stojim o vysvetleni toho, proc se domnivate, ze si python pletu se statickymi jazyky, i kdyz uz zacinam tusit, ze jde o nedorozumneni a ze je to kvuli tomu, ze si pod tvrzenim, ze funkce a tridy nejsou zamenitelne predstavujem kazdy neco jineho.
asi jsem se unahlil. byl to jenom takovej dojem. Kdyz sem videl jak se snazite funkce a tridy oddelovat, vzpomel sem si na Javu a kolik ma vzdycky reci
> To je samozrejme, jenze jak uz jsem vysvetloval, ja jsem hovoril o zamene jejich funkcnosti. Presvedcil jste me, ze v jednom smeru to jde, tridami lze nahradit funkce, protoze obsahuji metody, ktere jsou funkcnosti blizke funkcim. Naopak se vam to asi nepodari.
jo, naopak to asi nepujde. Kdyz sem rikal, ze jsou funkce a tridy zamenitelny, tak sem myslel jen ten jeden smer. Myslel jsem ze je to zrejme z toho, ze se hadame pod prispevkem, kde kdosi rikal, ze volani QCosi() neni volani funkce. Mel jsem to ale explicitne uvest - moje chyba.
QMainWindow() v pythone neexistuje.
QMainWindow() v skutočnosti vytvorí nový objekt typu QMainWindow a odkaz naňho potom odovzdá ako prvý argument funkcii QMainWindow.__init__() – takže analógiu môžeme vidieť skôr s týmto kódom Javy (C++):win = new QMainWindow();
To len aby sme zatiaľ dali veci na pravú mieru. Určite sa aj k tejto problematike autor neskôr vyjadrí.
Inak fajn článok, držím palec
Díky, už asi měsíc se chystám s PyQt začít, ale nebylo dost času. Teď jsem rád, že jsem počkal 
Išlo mi o to, že komplexné čísla sú náramné užitočné pri počítaní, kvôli vynikajúcim vlastnostiam a len málokedy ich niekto kreslí. Zvyčajne len na strednej škole, aby pani učiteľka ozrejmila žiakom, že sin a cos nadobúdajú veľmi pekný význam
Anyway, teraz už úplne offtopic a čisto zo záujmu, čo napríklad kreslíte?
Ja som sa doteraz stretol len s diferenciálnymi rovnicami popisujúcimi elektrické obvody, ale pritom som si nič nekreslil
Zlata Gaussova rovina nebo LAFCH&LFFCH... Asi ten, kdo vymysli osnovy, vi, proc se tohle nebere
A načo je akože dobré to kresliť? Dúfam, že to nie je len z dlhej chvíle
Ne vážně, jednu FLTK aplikaci mám a líbí se mi to. Je to minimalistický, funkční. Ne tak pěkný jak GTK+, ale co už...
Eric ma odkaz i primo na homepage PyQt. Nerikam rozebirat kazdy IDE vhodny pro Python, ale tohle k PyQt proste patri, tak zminka na dva radky nezabije...
POkouším se nainstalovat na Ubuntu PyQT, ale uz u "python configure.py" to na mě vyplivne:
Traceback (most recent call last):
File "configure.py", line 31, in ?
import sipconfig
ImportError: No module named sipconfig
přitom sip nainstalováno mám. Kdyžtak prosím nekamenovat :) a díky za radu :)
Nahodte Synaptic a vyhledejte python-qt.
Skvely serial, chtel jsem se ucit PyQt ale zatim jsem se k tomu nejak nedostal az ted
. Uz jsem pridal na nej odkaz na PyCZ Wiki.
Jeste se chci zeptat: kolik dilu planujete? Co vsechno hodlate probrat?
Tak kolik dilu to nakonec bude nevim, ale ma idea je takova, ze tak do tretiho dilu bych se chtel u QT dostat k prvkum button, lineEdit, TextLabel. Samozrejme je vysvetleni signalu a slotu trosku do hloubky. V Pythonu se do tretiho dilu vysvetli tvorba vlastnich funkci a snad i trid, textovy vstup, podminky, cykly a mozna zvladnem jeste pokrocilou praci s poli :) Od tretiho dilu bych chtel, aby byla vysledkem kazdeho dilu nejaka pouzitelna aplikace. No a pri tvorbe te aplikace si pak vysvetlime nove prvky, ktere jsme pouzili. Nezavazuju se, ze tohle schema dodrzim
, ale pokud to bude mozne, chtel bych, aby bylo takove.
Moc vsem dekuji za podporu
. Hodne me potesila reakce na clanek 