Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Stručný průvodce vytvářením GUI v Python / Tk Eduard Sojka URO, Léto 2003/4 VŠB – Technická univerzita Ostrava."— Transkript prezentace:

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

2 2 Python / Tk: stručný průvodce  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í. Co děláme? Proč? Knih. GUI Skript. jazyk

3 3 Python / Tk: stručný průvodce  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++). Co je Python, Tkinter?

4 4 Python / Tk: stručný průvodce  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). Několik důvodů, proč byste mohli o tvorbě GUI s využitím jazyka Python něco vědět

5 5 Python / Tk: stručný průvodce  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) Nevýhoda  Vhodný pro vytváření prototypů GUI (rychlé provádění změn). Typické použití (v kontextu tvorby GUI)

6 6 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.'

7 7 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 = j 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)

8 8 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)

9 9 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

10 10 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']

11 11 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.'

12 12 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

13 13 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

14 14 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)

15 15 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

16 16 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

17 17 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', command=self.ukaz) radiobutton2.py

18 18 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

19 19 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

20 20 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

21 21 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=' ') self.sy = Scrollbar(self.fr, orient='vertical', command=self.ca.yview) self.ca.configure(xscrollcommand=self.sx.set, yscrollcommand=self.sy.set) canvas3.py

22 22 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

23 23 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(' ', self.liTakeOver) listbox1.py

24 24 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

25 25 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

26 26 Python / Tkinter 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 Kaskádová menu s obrázky

27 27 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

28 28 Python / Tkinter Ještě několik vazeb na události master.bind(' ', self.showFileMenu) master.bind(' ', self.showMessage) master.bind(' ', self.appExit) def showFileMenu(self, event): self.filemenu.post(event.x_root, event.y_root) def showMessage(self, event): tkMessageBox.showinfo('Info', 'URO ') def appExit(self, event): self.fr.quit() menu3.py

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

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


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

Podobné prezentace


Reklamy Google