IB111 Programování a algoritmizace Graphical User Interface (GUI) Historie GUI  První OS s GUI: Xerox PARC  Apple, Microsoft, Sun následovali Historie GUI  MAC OS (System 1.1) - 1984 Historie GUI  Microsoft Windows 3.1 (1992) Historie GUI  Unixový X Window System (od roku 1983) Historie GUI  Windows 95 Historie GUI  Windows Aero (3D prvky) Programování GUI  Microsoft Windows  Programátorské rozhraní Win32  Dnes nazývané Windows API  Několik tisíc funkcí  Podpora pro vytváření menu, ikon, bitmap, dialogů apod.  Založeno na událostmi řízené architektuře programu  Event driven programming Programování GUI  Program pro MS Windows pracuje v následujících krocích  registrace třídy okna  vytvoření hlavního okna aplikace  provádění cyklu, který očekává příchod události  jakmile událost přijmeme následuje její předání obslužné funkci okna a zpracování události  cyklus končí s příchodem zprávy pro ukončení celé aplikace Příklad v C/C++ pro MS Windows  Základní struktura aplikace Příklad v C/C++ pro MS Windows  Registrace třídy okna Programování GUI  Vytvoření hlavního okna aplikace Programování GUI  Událostmi řízené programování  Vstup od uživatele znamená vytvoření události  Stisky kláves  Přesun/kliknutí myši  Program reaguje na jednotlivé události a zpracovává (ošetřuje) je. Událostmi řízené programování Fronta zpráv Zpráva Zpráva Zpráva Zpráva Zpráva Výběr zprávy Odeslání zprávy (dispatch) Smyčka zpráv Zpracování zprávy Nové zprávy Příklad v C/C++ pro MS Windows Okno  Základní prvky okna Okna  Okno rodičovské a dětské  Okno rodičovské se často skládá z několika oken dětských  Widget – grafické objekt s určitou funkčností  Např. tlačítko Prvky GUI  Hlavní menu  Kontextové menu Prvky GUI  Button  Edit Box Prvky GUI  Check Box  Radio Buttons Prvky GUI  List Box  Combo Box Společné dialogové boxy Historický příklad MacOS Historický příklad Windows 3.x GUI v pythonu  Python má i nemá GUI (jak se to vezme)  K dispozici na řadě platforem (OS)  Tkinter  wxWidgets  Qt  Gtk+  FLTK  FOX  OpenGL  Plus několik specifických  Mac: The Mac port  Windows: Pythonwin (používá MFC) Tkinter  Na cvičení si ukážeme několik příkladů v Tkinter  Začneme importem  import Tkinter nebo  from Tkinter import * Tkinter „Hello world“ from Tkinter import * root = Tk() w = Label(root, text="Hello, world!") w.pack() root.mainloop() Základní „widgets“ v Tkinter