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

Python - 11. lekcePython - 11. lekce

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Python - 11. lekce

Google       Google       30. 9. 2005       38 280×

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ě.

Reklama
Reklama

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 Lepší hosting chrání i vaše data

Lepší hosting chrání i vaše data

Kybernetických útoků na webové stránky rok od roku přibývá, jsou čím dál důmyslnější a páchají stále větší škody. Možná si říkáte, že vás se to netýká, opak je ale pravdou. Jeden z nejčastějších typů útoku využívá zranitelnosti samotných webových stránek a spočívá v umístění škodlivé části programového kódu (tzv. malware) přímo do jejich těla. 

Reklama
Reklama
Obrázek ke článku Spotřebitelé důvěřují novým technologiím při péči o seniory, ale správu financí by jim nesvěřili

Spotřebitelé důvěřují novým technologiím při péči o seniory, ale správu financí by jim nesvěřili

 71 % vítá nové technologie ke sledování zdravotního stavu postarších příbuzných, které jim umožňují žít déle doma

 Pouhých 7 % by svěřilo správu svých financí umělé inteligenci, i kdyby to znamenalo rychleji naspořit prostředky na pořízení bydlení

 64 % respondentů nemá dojem, že firmy a stát dostatečně informují o tom, jaké technologie a jak užívají

Obrázek ke článku Mobilní operátoři využívají digitální modely terénů a kvůli stavebnímu boomu i 3D modely budov

Mobilní operátoři využívají digitální modely terénů a kvůli stavebnímu boomu i 3D modely budov

Mít pokrytí co nejširšího území Česka a nabízet svým zákazníkům co nejlepší signál je společným cílem všech mobilních operátorů. Při plánování sítí proto využívají aktualizovaných digitálních modelů terénu, jež jim umožňují přesně si vypočítat pokrytí a šíření signálu. V hustě zastavěných oblastech a s ohledem na stavební boom jim pak pomáhají také 3D modely budov, které by jim při nesprávném umístění vysílače mohly signál blokovat.

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