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

Python - 11. lekcePython - 11. lekce

 

Python - 11. lekce

Google       Google       30. 9. 2005       33 089×

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 Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý