Stručný průvodce vytvářením GUI v Python / Tk

Slides:



Advertisements
Podobné prezentace
Tomáš Petříček Microsoft C# MVP
Advertisements

ŘÍDÍCÍ STRUKTURY - PODMÍNKY
IKT PHP PHP Tvorba formuláře - 10 Mgr. Josef Nožička
Vývoj aplikací s využitím JavaFX
Technologie pro publikování na webu 1 Ing. Jiří Štěpánek.
Dynamické dokumenty na straně klienta Informatika pro ekonomy I přednáška 5, 6.
Formuláře Formuláře lze nalézt téměř na každém webu. Formuláře lze nalézt téměř na každém webu. Použití formulářů: Použití formulářů: Blog Blog Uživatelské.
Aplikační a programové vybavení
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
Fakulta elektrotechniky a informatiky
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
Algoritmizace a programování Podprogramy v Delphi - 10
PHP Zpracování formuláře v PHP - 11 Mgr. Josef Nožička IKT PHP
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
● SWIG - Simplified Wrapper and Interface Generator ● + google a diskusní fóra ● nástroj zjednodušující (a sjednocující)
YMUSY1 Multimediální systémy 1 Cvičení 5 Formuláře a ovládací prvky.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Třídy, generické třídy, pseudotřídy
Procedury a funkce Základní charakteristika a použití v programu.
Apache, PHP, MySQL Lukáš Masopust Web server Apache Aplikace schopná zpracovat HTTP požadavek Nejpoužívanější Web server Vytváří ho The Apache.
Analýza informačního systému
TNPW1 Cvičení
Uživatelská rozhraní Eduard Sojka, Roman Szturc, Martin Němec, Jan Plaček Léto 2003/4 VŠB – Technická univerzita Ostrava.
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Tvorba webu Úvod do CSS 1.
Uživatelská rozhraní Průvodce problematikou konstruování GUI Eduard Sojka URO, Léto 2003/4 VŠB – Technická univerzita Ostrava.
Kaskádové styly - CSS.
ActionScript Moderní počítačové aplikace. Charakteristika Je odvozen od JavaScriptu Integruje do Flashe interaktivní ovládání Umožňuje vytvořit přehledné.
Síťové programování Informační technologie - praxe SPŠE V úžlabině Jan Klepal, Mgr. Radka Müllerová Verze 2.
Je to program (aplikace), který slouží k úpravám prostého textu.  Na rozdíl od textových procesorů, se kterými se často pletou, postrádají textové editory.
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
Návrh a tvorba WWW Cvičení 4
Jazyk PHP Programovací jazyk PHP (Hypertext preprocessor) je skriptovací jazyk, který běží na straně serveru. KLIENT - SERVER Server posílá do vašeho počítače.
EBSCOhost Collection Manager ~ Vytváření profilů Tutoriál support.ebsco.com.
KASKÁDOVÉ STYLY 1. 2 PRVNÍ STANDARD (CSS1) BYL PŘEDSTAVEN V ROCE 1996, PROTO STARŠÍ PROHLÍŽEČE ("ČTYŘKOVÉ" VERZE) IE A NN KASKÁDOVÉ STYLY NEPODPORUJÍ.
CSS Cascading Style Sheets Kaskádové styly
Vytváření GUI pomocí skriptovacích jazyků Eduard Sojka URO, Léto 2003/4 VŠB – Technická univerzita Ostrava.
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
AJAX nejmodernější webová technologie… seminář pro učitele ZŠ a SŠ Mgr. Marek Osuchowski Ostravská univerzita © 2011.
Úvod do JavaScriptu JavaScript je p JavaScript je programovací jazyk, který se používá na webových stránkách. JavaScript je typu KLIENT - KLIENT To znamená,
PHP Vytváření formuláře.
2 UDÁLOSTI ONMOUSEOVER, ONMOUSEOUT Odkaz Událost je část kódu vyvolana za určité (uživatelem vyvolané) situace (kliknutí myší, přejetím kurzorem myši,
Uživatelská rozhraní Uživatelská rozhraní 3. cvičení.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Stručný průvodce vytvářením GUI v Tk
123.
Formuláře Formuláře uzavíráme do elementů Formuláře uzavíráme do elementů a a Tyto elementy jsou součástí jazyka XHTML, to znamená, že při použití v PHP.
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
VY_32_INOVACE_4.3.IVT1.07/Ku Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Pavla Kubínková CZ.1.07/1.5.00/ CSS formátování.
Styly CSS VýhodyDruhyZápis. Výhody CSS oddělení struktury od formátování oddělení struktury od formátování přilinkováním souboru styl.css lze formátovat.
Úvod do UNIXu (6th round)
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Uživatelská rozhraní Uživatelská rozhranícvičení Martin Němec A
Jednoduché zprávy funkce MsgBox MsgBox (prompt, buttons, title, helpfile, context): button funkce InputBox InputBox (prompt, title, default, xpoz, ypoz,
Uživatelská rozhraní Uživatelská rozhraní 4. cvičení.
Uživatelská rozhraní Uživatelská rozhraní 2. cvičení.
Tabulkové editory © Tabulkové editory slouží k: vytváření a úpravě tabulek na rozdíl od textových editorů jsou tabulky v těchto editorech aktivní,
Grafické rozhraní. Modul Tkinter Pro práci s grafickým rozhraní využíváme modul Tkinter Po naimportováni modulu můžeme vytvářet velice jednoduše tlačítka,
Moduly.
Jiří Šafr jiri.safr(AT)seznam.cz Poslední aktualizace 25/6/2014
ZAL – 3. cvičení 2016.
R nejen v SQL Serveru Jiří Neoral BI Data Architect
TNPW1 JavaScript Ing. Jiří Štěpánek.
Databázové systémy a SQL
C# přehled vlastností.
Přednáška 9 Triggery.
ZAL – 7. cvičení 2016.
Ovládací prvky Ing. Petr Voborník, Ph.D.
Transkript prezentace:

Stručný průvodce vytvářením GUI v Python / Tk Eduard Sojka URO, Léto 2003/4 VŠB – Technická univerzita Ostrava

Python / Tk: stručný průvodce Co děláme? Proč? Skriptovací jazyky připraví nejobvyklejší použití knihoven GUI. Jste pak stručnější, rychlejší a nemusíte znát všechny detaily. Skriptovací jazyky lépe vyhovují pro sestavování aplikací. Knih. GUI Skript. jazyk

Python / Tk: stručný průvodce Co je Python, Tkinter? Python je obecný programovací jazyk vhodný mimo jiné i pro skriptování a vytváření GUI. Do jazyka Python byla nejprve vestavěna knihovna Tk (modul Tkinter). Postupem času byly vestavěny i knihovny další. Např. wxWindows, Qt, GTK (wxPython, QtPython, GTKPython) Použití Pythonu nemusí být ale vhodné vždy (nevhodný např. pro intenzivní matematické a technické výpočty – v těchto částech je na místě použít zejména C, C++).

Python / Tk: stručný průvodce Několik důvodů, proč byste mohli o tvorbě GUI s využitím jazyka Python něco vědět Jazyk Python je jednoduchý. Lze se jej rychle naučit. Datové struktury list a dictionary usnadňují sestavování aplikací a vytváření GUI. Dále bez deklarací proměnných. Proto méně kódu a rychlejší práce než v C/Java. Python je „pěkný“ jazyk (na rozdíl od Tcl). Existuje na všech platformách (a také dokonce i celý realizovaný v Javě – Jython).

Python / Tk: stručný průvodce Nevýhoda Jazyk je interpretovaný. K vaší aplikaci musí být interpret. Nebo musíte interpret do vaší aplikace „přibalit“. Nástroje jsou zdarma (vyvíjeny jako podobně jako Linux) Typické použití (v kontextu tvorby GUI) Vhodný pro vytváření prototypů GUI (rychlé provádění změn).

Python / Tk: Vzhled programu Vzhled programu: Definování třídy myApp, __init__ je konstruktor, onTlacitko je metoda. Zarovnávání je důležité. Konce řádků také. Pozor na dvojtečky. class myApp: def __init__(self, master): self.fr = Frame(master) self.bu = Button(self.fr, text='Zmackni', command=self.onTlacitko) self.fr.pack() self.bu.pack() def onTlacitko(self): print 'Zmackl jsi.'

Python: Základní datové typy a přiřazování Elementární datové typy a přiřazování a = 77; b = 3.14 c = 1.2 + 3.14j d = e = c / 2.0 uro = ’URO 2003/4’ nadpis = uro[0:3] + " leto" + uro[3:99] print uro, d.imag, 'ještě něco' import math x = math.sqrt(a)*c*c y = math.cos(b)

Python: Náhled na použití seznamů Seznam a několik „cviků“ s ním. predmety = ['URO', 'Java', 'C++', 'PG', 'DAIS'] predmety.append(333) volba = predmety[0:3] volba.remove('Java') volba[0:1] = [] volba.insert(0, 'neco') volba[0:0] = ['AGU', 'DZO'] volba.append(predmety[4]) if volba.count('C++') == 0: volba.append('C++') volba.sort() print volba.pop(3) print 'volba:', volba; print len(volba)

Python: Náhled na použití slovníků Slovník a několik „cviků“ s ním. body = {'URO': 100, 'C++': 99, 'OOP': 98} body['Java'] = 51 print body['C++'] del body['OOP'] print body.keys() print body.has_key('URO') for x in body.keys(): body[x]=0

Python: Náhled na použití slovníků Ještě slovník studenti = ['SOJ11', 'SLA22', 'XXX33'] predmety = ['URO', 'C++', 'Java', 'OOP'] vysledek = dict([(p, 0) for p in predmety]) vysledky = dict([(s, vysledek) for s in studenti]) print vysledky vysledky['SOJ11']['C++'] = 51 print vysledky['SOJ11']

Python: Náhled Když už ani nevíme, co je v proměnné: x = ['abc', 'neco'] x = 'ahoj' x = {'nam' : 2220, 'val' : 33} if type(x) == str: print 'Je to retezec.' elif type(x) == list: print 'Je to seznam.' elif type(x) == dict: print 'Je to slovnik.' elif type(x) == float: print 'Je to float.' else: print 'Je to neco jineho.'

Python: Několik dalších detailů Získání obsahu adresáře. import glob a = glob.glob('*.py') print a b = glob.glob('menu?.py') print b

Python: Několik dalších detailů Získání obsahu URL. import urllib2 f = urllib2.urlopen('http://www.vsb.cz') print f.read(100) for line in urllib2.urlopen('http://www.fei.vsb.cz'): if 'Fax:' in line: print line

Python: Několik dalších detailů Komprese, dekomprese a získání CRC kódu. import zlib s = 'uro0 uuro00 urro000 uroo0000 uro0 uuro00' print len(s) t = zlib.compress(s) print len(t) print zlib.decompress(t) print zlib.crc32(t)

def __init__(self, master): self.fr = Frame(master) Python / Tkinter Popiska from Tkinter import * class myApp: def __init__(self, master): self.fr = Frame(master) self.la = Label(self.fr, text='Toto …') self.fr.pack(); self.la.pack() self.fr.master.title('Label 1') root = Tk() app = myApp(root) root.mainloop() label1.py

def __init__(self, master): self.fr = Frame(master) Python / Tkinter Tlačítko s obrázkem class myApp: def __init__(self, master): self.fr = Frame(master) master.title('Button4') self.photo = PhotoImage(file='exit.gif') self.bu = Button(self.fr, image=self.photo, command=self.fr.quit) self.fr.pack() self.bu.pack(padx=8, pady=8) button4.py

def __init__(self, master): self.fo = StringVar() Python / Tkinter Radio buttons class myApp: def __init__(self, master): self.fo = StringVar() self.la = Label(master, text='A pair of …') self.r1 = Radiobutton(master, text='Times', variable=self.fo, value='Times', command=self.ukaz) self.r2 = Radiobutton(master, text='Helvetica', variable=self.fo, value='Helvetica', radiobutton2.py

Pokračování z předchozího snímku. Python / Tkinter Pokračování z předchozího snímku. master.title('Radiobutton 2') self.la.pack() self.r1.pack(side='left') self.r2.pack(side='left') self.r1.select() self.ukaz() def ukaz (self): self.newFont = tkFont.Font(family= self.fo.get(), weight='bold') self.la.configure(font=self.newFont) radiobutton2.py

def __init__(self, master): self.fr = Frame(master) Python / Tkinter Vstup class myApp: def __init__(self, master): self.fr = Frame(master) self.en = Entry(self.fr) self.bv = Button(self.fr, text='Vymazat', width=10, command=self.vymaz) self.bz = Button(self.fr, text='Zpracovat', width=10, command=self.zpracuj) self.la = Label(self.fr, foreground='red') #Sem ještě příjdou volání pack entry1.py

self.la.configure(text=self.en.get()) Python / Tkinter Pokračování def vymaz(self): self.en.delete(0, END) def zpracuj(self): self.la.configure(text=self.en.get()) entry1.py

Plátno s rolovacími lištami Python / Tkinter Plátno s rolovacími lištami class myApp: def __init__(self, master): self.fr = Frame(master) self.ca = Canvas(self.fr, width=200, height=100, scrollregion='0 0 400 250') self.sy = Scrollbar(self.fr, orient='vertical', command=self.ca.yview) self.ca.configure(xscrollcommand=self.sx.set, yscrollcommand=self.sy.set) canvas3.py

self.ca.grid(row=0, column=0) Python / Tkinter Pokračování self.fr.pack() self.ca.grid(row=0, column=0) self.sy.grid(row=0, column=1, sticky='ns') self.sx.grid(row=1, column=0, sticky='we') self.li = self.ca.create_line(25, 25, 125, 125, width=2, fill='red') self.ov = self.ca.create_oval(125, 25, 225, 125, fill='blue') canvas3.py

def __init__(self, master): self.fr = Frame(master) Python / Tkinter Listbox s doplněním class myApp: def __init__(self, master): self.fr = Frame(master) self.li = Listbox(self.fr, width=15, height=3) self.la = Label(self.fr, text= 'nic', foreground= 'red') self.bu = Button(self.fr, text= 'Dopln', command=self.dopln) self.li.insert(0, 'Tatra', 'Areo', 'Skoda') self.li.bind('<Double-B1-ButtonRelease>', self.liTakeOver) listbox1.py

Pokračování: Doplnění a převzetí výběru. Python / Tkinter Pokračování: Doplnění a převzetí výběru. def dopln(self): self.li.insert(END, 'Wikov', 'Jawa') self.li.configure(height=self.li.cget('height')+2) self.bu.configure(state='disabled') def liTakeOver(self, event): self.la.configure(text=self.li.get('active')) # Také lze: get(ACTIVE) listbox1.py

def __init__(self, master): self.fr = Frame(master) Python / Tkinter Spinbox s čísly class myApp: def __init__(self, master): self.fr = Frame(master) self.sb = Spinbox(self.fr, fr=2.0, to=3.0, increment=0.1) self.la = Label(self.fr, foreground='red') self.bu = Button(self.fr, text='OK', command=self.buok) self.sb.set(2.5) # Pozor: doplnit do Tkinter! def buok(self): self.la.configure(text=self.sb.get()) spinbox2.py

Kaskádová menu s obrázky Python / Tkinter Kaskádová menu s obrázky class myApp: def __init__(self, master): self.menubar = Menu(master) self.cascmenu = Menu(self.menubar, tearoff=0) self.imgCopy = PhotoImage(file='copy.gif') self.cascmenu.add_command(compound='left', image=self.imgCopy, label='Copy', underline=0, command=self.copy) menu4.py

self.filemenu = Menu(self.menubar, tearoff=0) Python / Tkinter Pokračování self.filemenu = Menu(self.menubar, tearoff=0) self.filemenu.add_cascade(label='Kaskada... ', underline=0, menu=self.cascmenu) self.menubar.add_cascade(label='File', menu=self.filemenu) master.config(menu=self.menubar) menu4.py

Ještě několik vazeb na události Python / Tkinter Ještě několik vazeb na události master.bind('<Button-1>', self.showFileMenu) master.bind('<Key-F1>', self.showMessage) master.bind('<Control-c>', self.appExit) def showFileMenu(self, event): self.filemenu.post(event.x_root, event.y_root) def showMessage(self, event): tkMessageBox.showinfo('Info', 'URO 2003-4...') def appExit(self, event): self.fr.quit() menu3.py

Python / C API Python: Vytvoření nových modulů pro Python. Zabalení interpreteru Python do aplikace.

Python / Tkinter - Co dál? (chcete-li)… Jazyk uro\texty\python-tutorial.pdf Tkinter uro\texty\an-introdiction-to-tkinter.pdf uro\texty\tkinter.pdf Navštivte http://www.python.org