Python - 11. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python - 11. lekcePython - 11. lekce

 

Python - 11. lekce

Google       Google       30. 9. 2005       42 228×

Dnes to bude něco o grafickém prostředí neboli GUI neboli oknech. Aneb jak z Pythonu dostat, aby se moje aplikace otevřela v běžném okně na Linuxu, Windows i Macu, místo toho, aby se otevírala v černém shellovském okně.


Trocha teorie

Většina začínajících programátorů přímo omdlévá když zjistí, že musí začínat programování na černém příkazovém řádku, se kterým se nikdy ve Windows nesetkala. Maximálně u starých her nebo u chybových hlášek! Na druhou stranu zase existují začínající, kterým naopak imponuje, když mohou něco tvořit tím, že píšou (a neklikají) a černou obrazovku milují, protože v oknech dnes přeci "už umí každý!" Mě osobně více vyhovuje, když program dobře funguje než když dobře vypadá. Snad proto jsem začal v tomto kurzu s okny v Pythonu až tak pozdě.


Velký výběr

Pro začátečníka může být matoucí, že Python má na výběr ohromné množství grafických prostředí (= modulů), ve kterých můžete tvořit okna. To je situace naprosto odlišná od Delphi nebo VB. Tam prostě máte jedno prostředí a v tom tvoříte. V Pythonu jich je spousty: Tkinter, wxPython, GTK, Qt, FLTK, EasyGUI, Pygame...

Které zvolit? Podle mého soudu je pro začátečníky nejvhodnější Tkinter. Jeho výhodou je, že je přibalený k instalaci, je v něm vytvořena spousta modulů a aplikací (například prostředí IDLE). Chci-li být upřímný, musím dodat i nevýhody - nižší podpora nejnovějších okenních technologií a vychytávek. Ale nám jde o základy, ne o specialitky. Ať zvolíte jakékoliv a budete-li chtít tvořit více, než je v tomto kurzu, bez angličtiny to nepůjde. Ostatně i já jsem s angličtinou začínal tak, že jsem si slovo po slovu překládal manuály a příručky k programům, které jsem potřeboval. Rozhodně to není ztracený čas a doporučuji vám to. Českých příruček a tutoriálů ke grafickým prostředí v Pythonu je jako šafránu. Nejvíce má snad Tkinter, přesto je to dost málo ve srovnání s konkurencí :-(.

Klikajícího programátora také zaskočí, že v Tkinter si okno nenaklikám, jako třeba ve VB nebo Delphi. V něm se vše píše ručně. Já osobně si myslím, že to je částečně výhoda, protože tak má člověk šanci pochopit celé pozadí tvorby oken, mít ho plně pod kontrolou a rozumět každému každičkému řádku ve svojí aplikaci. Klikající prostředí v sobě mají např. Gtk nebo wxPython.


Tkinter

Tak jestli jste dočetli až sem a nevzdali jste to, gratuluji. Všechno má svoje výhody a nevýhody, co se dá dělat.

Tkinter je tedy standardní grafické rozhraní ke grafickému uživatelskému prostředí Tk. V současnosti má verzi 8.4. Chcete-li s ním pracovat, musíte ho nejdříve do svého scriptu naimportovat pomocí import Tkinter nebo from Tkinter import *. Tato druhá forma se obecně nedoporučuje až na pár výjimek, a tou jednou jsou právě grafická prostředí.


Ahoj světe!


Konec řečí, jdeme na to. Vyzkoušejte následující:

# -*- coding: utf-8 -*- 
from Tkinter import *

root = Tk()

w = Label(root, text=u"Ahoj světe!")
w.pack()

root.mainloop()
print "Konec"

U výše uvedeného kódu si dejte pozor na kódování češtiny . Nestačí, že je zde uvedeno utf-8, vy musíte, po překopírování kodu do vašeho editoru, toto kódování také nastavit v editoru.


Detaily

Čeština

Ukázku kódu začínáme definováním češtiny. Přesto, že můžete používat jakékoliv kódování, doporučuji zůstávat u utf-8, které se jeví jako nejvíce progresivní. Při tomto způsobu se ani nemusí psát u řetězců to 'u', které je jinak povinné. Pozor, ať to máte v tom kódování také uloženo, jinak čeština nefunguje ...

# -*- coding: utf-8 -*- . 

import

Následuje importování samotného grafického prostředí GUI. V něm jsou obsaženy všechny funkce, které potřebujeme k vytváření oken, menu, obrázků a všech akcí (reakce na události), které s nimi pak můžeme dělat.

from Tkinter import *

Inicializace hlavního okna

Další řádek - je inicializace Tkinter, kde vytváříme hlavní okno v Tkinter. Oknu (a dalším věcem v GUI) říkáme obecně widget (česky snad udělátko).

root = Tk()

Widget neboli udělátko

Slovem udělátko (v angličtině widget) rozumějte jakýkoliv grafický prvek na obrazovce - tedy třeba jakýkoliv text v okně, jakékoliv tlačítko, menu, obrázek v okně, oblast, kde můžete v okně psát, a také samotné okno. To vše je udělátko. Hlavní okno je normální okno s titulkem a dalšími prvky, které tam dodává váš systém, jako např. Minimalizace, Maximalizace, Zavřít, Stavový řádek,včetně barvy, umístnění, apod.

Label

Dále vytvoříme udělátko jménem Label (štítek) jako potomka okna root.

w = Label(root, text="Ahoj světe!")
w.pack()

Udělátko Label umí zobrazit v okně text nebo ikonu nebo jiný obrázek. V tomto případě používáme argument "text", abychom určili, jaký že to text se má zobrazit.

pack

Dále zavoláme k tomuto udělátku metodu pack(). Ta zabezpečí, aby okno bylo veliké akorát na náš text a zviditelní ho.

Hlavní smyčka mainloop

Nicméně, okno se nezobrazí dokud nevstoupíme do smyčky událostí Tkinter. Program zůstane v hlavní smyčce (mainloop) dokud okno nezavřeme. Hlavní smyčka událostí neobsluhuje pouze události od uživatele (jako například klik myší nebo zmáčknutí klávesy), ale také události od systému i samotného Tkinteru. Mezi nimi je také například metoda pack() a aktualizace okna. To kromě jiného znamená, že okno aplikace se nezobrazí, dokud do této hlavní smyčky nevstoupíme.

root.mainloop()

Konec

Teprve když okno zavřeme, vypíše se "Konec".


Úkol

Úkol se netýká gui ani nebudete potřebovat nějaké nové funkce, spíše chytře použít staré známé cykly, podmínky, seznamy a hlavu. Takový malý programátorský hlavolam :-).

Zadání: Je dána posloupnost 50 čísel, z nichž některá mohou být stejná. Určete, která všechna čísla se v posloupnosti nachází.

Návod: Vygenerujte posloupnost (= seznam) 50 náhodných čísel třeba od 1 do 40. Tuto posloupnost procházejte a do nového výsledného seznamu číslo přidejte jen tehdy, pokud ono v ní ještě není. Způsob řešení může být i jiný...

Příklad: Z posloupnosti 5,3,5,4,4,4,7,2 by se mělo vytisknout 5,3,4,7,2.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Pavel KosinaAutor programuje v Pythonu.
Web    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý