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

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 552×

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 Ericsson ConsumerLab Report: rozšířená realita je další úrovní gamingu

Ericsson ConsumerLab Report: rozšířená realita je další úrovní gamingu

Celkem 66 % uživatelů zajímá rozšířená realita v oblasti gamingu. Mezi nimi je i 35 % těch, kteří jinak hry nehrají.
Pro téměř 50 % respondentů by bylo zajímavé zapojení virtuální objektů do reálného světa. Objekty by zůstaly tam, kde je při hře „umístili“.
Až 43 % uživatelů láká využití rozšířené reality ve sportu

Reklama
Reklama
Obrázek ke článku Instalace nejnovější verze Apache 2.4, PHP 7.3, MariaDB 10.3 a Memcached na Windows 10

Instalace nejnovější verze Apache 2.4, PHP 7.3, MariaDB 10.3 a Memcached na Windows 10

Buďte při vývoji efektivní! Pomocí tohoto návodu během chvíle vytvoříte ze svého počítače lokální webový server. Vyzbrojíte jej vším, co budete při práci potřebovat: Apache 2.4, PHP 7.3, MariaDB 10.3 a Memcached. Je to plná polní pro webové vývojáře s Windows 10. Navíc poradíme, jak mít na localhostu více projektů pomocí VirtualHost.

Obrázek ke článku Do poskytovatele managed hostingových služeb vshosting~ vstupují zahraniční investoři

Do poskytovatele managed hostingových služeb vshosting~ vstupují zahraniční investoři

Po více než roce jednání do vshosting~ vstoupili 3 investiční skupiny z Německa: Pecunalta, BrainWeb Investment a Quines Capital. Jde o investiční skupiny, které mají účast na projektech jako PlusServer (největší managed provider v Německu a jeden z největších v Evropě), PLESK, cPanel, CloudLinux, GoDaddy (největší světový hostingový poskytovatel z USA), či Acronis, pomohou vshosting~ v jeho plánované mezinárodní expanzi na další zahraniční trhy. Ve vshosting~ nyní drží 75% podíl, zbylých 25 % zůstává zakladatelům vshosting~, kterými jsou Damir Špoljarič (CEO) a Jan Martinů (CTO).

Obrázek ke článku Posuňte své znalosti IT na výrazně vyšší úroveň

Posuňte své znalosti IT na výrazně vyšší úroveň

Zájem o IT odborníky je v současnosti v tuzemsku i v zahraničí enormní a vedení firem si moc dobře uvědomuje, jak těžké je získat ty správné. I přesto, že je odborníků na trhu dlouhodobý nedostatek, stále platí, že část z nich je - a bude - placena výrazně lépe než ti ostatní. Proč tedy nebýt mezi nimi?

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