Käyttöliittymäohjelmointi



Samankaltaiset tiedostot
Zeon PDF Driver Trial

Flash ActionScript osa 4

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

HY-käyttäjät HUS/HYKS käyttäjät

Jypelin käyttöohjeet» Ruutukentän luominen

C# Windows ohjelmointi perusopas

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04

Laskuharjoitus 9, tehtävä 6

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Octave-opas. Mikä on Octave ja miksi? Asennus

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Graafisen käyttöliittymän ohjelmointi

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Matlabin perusteita Grafiikka

T Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

Harjoitus 5: Simulink

SQL Buddy JAMK Labranet Wiki

HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

CLOUDBACKUP TSM varmistusohjelmiston asennus

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

HYVÄKSILUETTUJEN SUORITUSTEN REKISTERÖIMINEN

Osa 7: Hahmojen ohjelmointi ja hienosäätö

IR-lämpömittarityypit

MixW ja Dx-vihjeet (ohje) oh3htu

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IR-lämpömittarityypit

Java-kielen perusteet

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmoinnin perusteet Y Python

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Kieliteknologian ATK-ympäristö Kolmas luento

Ohjelmoinnin perusteet Y Python

HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ

Mainosankkuri.fi-palvelun käyttöohjeita

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Web Services tietokantaohjelmoinnin perusteet

Mylly: Uusi tapa ka sitella teksti- ja puheaineistoa helposti ja tehokkaasti. Mietta Lennes ja Jussi Piitulainen FIN-CLARIN, Helsingin yliopisto

Microstation 3D laitesuunnittelu 2014

HSC-ohje laskuharjoituksen 1 tehtävälle 2

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

OFFICE 365 OPISKELIJOILLE

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

ASTERI KIRJANPITO KIELIVERSION OHJE

C470E9AC686C

1. ASIAKKAAN OHJEET Varauksen tekeminen Käyttäjätunnuksen luominen Varauksen peruminen... 4

Ohjelmoinnin perusteet Y Python

Eclipse ja JUnit-ohjelmoijatestit

5. HelloWorld-ohjelma 5.1

HARJOITUSTYÖ: LabVIEW, Liiketunnistin

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.

Visma Econet -ohjelmat ActiveX on epävakaa -virheilmoituksen korjausohjeet

Adobe Premiere Elements ohjeet

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

Ohjelmoinnin perusteet Y Python

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Ohjelmoinnin perusteet Y Python

Pelaajan tietojen lisääminen

HARJOITUSTYÖ: LabVIEW, Kiihtyvyysanturi

(Kuva2) (Kuva 3 ja 4)

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

17 BUDJETOINTI. Asiakaskohtainen Budjetti Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust Yleistä

Tilastokeskuksen rajapintapalveluiden käyttöönotto QGIS-ohjelmistossa

Planssit (layouts) ja printtaus

Hallintaliittymän käyttöohje

Connect-harjoituksia. Ratkaisumallit seuraavilla sivuilla!

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Eclipse & WindowBuilder

Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Internet Explorer 7 & 8 pop-up asetukset

Jypelin käyttöohjeet» Ruutukentän luominen

Japanin kirjoittaminen Japanese IME:n avulla Windows 7 -käyttöjärjestelmässä

Ohjelmoinnin perusteet Y Python

Valitse aineisto otsikoineen maalaamalla se hiirella ja kopioimalla (Esim. ctrl-c). Vaihtoehtoisesti, Lataa CSV-tiedosto

Pedacode Pikaopas. Web-sovelluksen luominen

Graafisen käyttöliittymän ohjelmointi

Ubuntu tunkkausta En US / Helsinki asennuksen jälkeen jotta loki5ac toimisi oikein Winen päällä.

Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi

Valitse ruudun yläosassa oleva painike Download Scilab.

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Solteq Tekso v Versiopäivitysohje.

Harjoitus Morphing. Ilmeiden luonti

Kahoot - kyselytyökalu

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

Ohjelmoinnin peruskurssi Y1

Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa

Octo käyttöohje 1. Sisältö

Makrojen mystinen maailma lyhyt oppimäärä

Johdatus ohjelmointiin

RACE-KEEPER COMPARO PC-OHJELMAN PIKAOHJE

Retrotec FanTestic ohjelman pikaopas

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Ohjelmoinnin perusteet Y Python

Transkriptio:

Käyttöliittymäohjelmointi Graafisen käyttöliittymän (GUI) avulla voidaan Matlabissa kirjoittaa graafisia sovellutuksia, jotka sisältävät erilaisia komponentteja: Programming GUI Components (GUIDE) Push Button Toggle Button Radio Button Check Box Edit Text Slider List Box Pop-Up Menu Panel Button Group Axes ActiveX Control Menu Item Näitä komponentteja voidaan käyttää kahdella tavalla: Kutsutaan suoraan komentoriviltä Kutsutaan funktion tai skriptin sisältä Kirjoitetaan ohjelma, joka sisältää erikseen käyttöliittymän ja ohjelmakoodin. Tässä apuvälineenä voidaan käyttää Matlabin työkalua GUIDE. Yksinkertainen ohjelma GUIDE:n avulla Käyttöliittymän jokaista komponenttia vastaa aliohjelma, joka suoritetaan, kun komponentti aktivoidaan (napauttamalla hiirella tai näppämistöltä). Aliohjelmia kutsutaan englanninkielisellä termillä callback 1. Tämän tyyppinen ohjelmointi poikkeaa merkittävästi "perinteisestä" lausekielisestä ohjelmoinnista, jossa ohjelma etenee alusta loppuun tietyssä aikajärjestyksessä, mahdollisesti välillä haarautuen. Käyttöliittymäohjelmointia sanotaan tapahtumaohjatuksi ohjelmoinniksi (event-driven programming), eli ohjelman suorituksella ei ole tiettyä järjestystä, vaan hiireltä ja näppikseltä saadut tapahtumat määräävät, mitä seuraavaksi tehdään. Callback ei tiedä, mitä muita callbackeja on ajossa samaan aikaa. Niiden keskinäisen suoritusjärjestyksen kontrollointi on käyttöjärjestelmän vastuulla (prioriteetit). Käyttöliittymäohjelma muodostuu kahdesta osasta:.fig-tiedostoon suunnitellaan käyttöliittymän graafiset elementit 1 Tälle en tiedä hyvää suomennosta, sanakirja tarjoaa termiä vastakutsu

.m-tiedostoon kirjoitetaan varsinainen ohjelmakoodi eli käytännössä callbackien toiminta. GUIDE käynnistyy komentoriviltä kirjoittamalla: >>guide Aukeaa oheinen käyttöliittymä. Tehdään sinne painonappi: Klikkaamalla hiiren oikealla napilla Push Button -nappiin, saadaan valikko, josta valitaan Property Inspector. Napin tekstin voi vaihtaa muuttamalla String-nimisen muuttujan arvoa.

Kun tarvittavat muutokset napin asetuksiin on tehty, Property Inspectorin voi sulkea. Tässä ohjelma on talletettu nimellä esim1.fig. Ohjelma on valmis ajettavaksi. Se tapahtuu joko valitsemalla yläpalkissa olevan pienen vihreän nuolen tai valikosta Tools -> Run. Nappi painuu jos sitä painaa hiirellä (tämä on itse asiassa Windowsin ominaisuus). Muuta sitten ei tapahdukaan Tämä siksi, että callback-rutiinia, jossa määritellään, mitä napin painallus tekee, ei ole kirjoitettu. Tehdäänpä napin taakse toiminto, joka tulostaa viesti-ikkunaan (message box) ohjelmointitehtävien klassikkotekstin Hello, world!

Avataan ensin tätä käyttöliittymää vastaava m-tiedosto valitsemalla View -> M-file editor. Tiedostonimen alkuosan on oltava sama kuin edellä esitetyn fig-tiedoston nimen alkuosa. Vanha tuttu editori käynnistyy. Etsitään sieltä lopusta seuraavan näköinen koodi: % --- Executes on button press in pushbutton1. function pushbutton1_callback(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) Tämä on callback, joka suoritetaan, kun käyttäjä painaa painonappia (pushbutton1). Lisätään sinne viimeiseksi riviksi: msgbox('hello, world!','eka Matlab GUI'); Ajetaan ohjelma uudestaan. Nyt napin painallus tuottaa seuraavan tuloksen: Dialog box Edellä esitetty msgbox on eräs esimerkki dialog box:ista. Sen avulla ohjelma välittää tietoa käyttäjälle. Vähän niin kuin printf tai cout, mutta Windowsympäristössä. Matlab sisältää varsin monipuolisen kokoelman erilaisia dialog boxeja: Predefined Dialog Boxes dialog errordlg export2wsdlg helpdlg inputdlg listdlg msgbox printdlg printpreview questdlg uigetdir uigetfile uigetpref uiopen uiputfile Create and display dialog box Create and open error dialog box Export variables to workspace Create and open help dialog box Create and open input dialog box Create and open list-selection dialog box Create and open message box Print dialog box Preview figure to print Create and open question dialog box Open standard dialog box for selecting a directory Open standard dialog box for retrieving files Open dialog box for retrieving preferences Open file selection dialog box with appropriate file filters Open standard dialog box for saving files

uisave uisetcolor uisetfont waitbar warndlg Open standard dialog box for saving workspace variables Open standard dialog box for setting object's ColorSpec Open standard dialog box for setting object's font characteristics Open waitbar Open warning dialog box Matlab on siitä mukava, että näitä voi kokeilla suoraan komentoriviltä, ilman että niitä tarvitsee ohjelmoida callbackiksi: Esimerkki: Erilaisia Dialog boxeja: >>errordlg >>helpdlg Tehtävä: Tutki, miten saat syötettyä muuttujille arvoja käyttäen inputdlg-komentoa. Katso apua esim. osoitteesta: http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/h elp/techdoc/ref/inputdlg.html&http://www.google.fi/search?hl=fi&q=matlab+inputdlg& meta= Tehtävä: Tee funktio, joka laskee kahden inputdlg:lla syötetyn luvun summan, erotuksen, tulon ja osamäärän ja tallentaa tulokset vektoriin. HUOM: Kaikki graafisen käyttöliittymän komponentteihin kirjoitetut syötteet ovat merkkijonoja! Ne on muutettava numeeriseksi tiedoksi komennolla str2num ennen kuin niillä voi laskea.

Edit text Lisätään ohjelmaan tekstikenttä,johon voidaan syöttää numeroita: function edit1_callback(hobject, eventdata, handles) % hobject handle to edit1 (see GCBO) % Hints: get(hobject,'string') returns contents of edit1 as text % str2double(get(hobject,'string')) returns contents of edit1 as a double handles.luku1=str2double(get(hobject,'string')) guidata(hobject,handles) Matlabin globaalit muuttujat tallennetaan luokkaobjektiin handles. guidata-komento tallentaa handles-luokan oliot Käyttöliittymän kautta voi syöttää ja tulostaa ainoastaan tekstiä. Teksti on muutettava numeeriseksi tiedoksi ennen kuin voi laskea jotain Globaalit muuttujat on syytä alustaa joihinkin järjellisiin alkuarvoihin. Tämä tapahtuu ohjelmakoodin alkupuolella kohdassa:

% --- Executes just before esim1 is made visible. function esim1_openingfcn(hobject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hobject handle to figure % varargin command line arguments to esim1 (see VARARGIN) % Choose default command line output for esim1 handles.output = hobject; %Tähän väliin omat alustukset! handles.plus=0; handles.miinus=0; % Update handles structure guidata(hobject, handles); Nyt napin painallus laskee kahteen tekstikenttään syötetyt luvut yhteen ja tulostaa summa message boxissa: % --- Executes on button press in pushbutton1. function pushbutton1_callback(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) tulos=num2str(handles.luku1+handles.luku2) msgbox(tulos,'tulos'); Tehtävä: Tee GUIDE:n avulla nelilaskin. Ohjelmalle annetaan kaksi lukua tekstikentissä. Käyttöliittymä sisältää 4 painonappia, joita painamalla valitaan joku neljästä peruslaskutoimituksesta. Ohjelma tulostaa tuloksen message boxissa. Radio button Aloitetaan alusta tekemällä uusi käyttöliittymä, joka sisältää vain yhden radiobuttonin:

% --- Executes on button press in radiobutton1. function radiobutton1_callback(hobject, eventdata, handles) % hobject handle to radiobutton1 (see GCBO) % Hint: get(hobject,'value') returns toggle state of radiobutton1 handles.onvalittu=get(hobject,'value') guidata(hobject,handles) Kokeillaan ajaa tama: Koodissa olevat rivit handles.onvalittu=get(hobject,'value') guidata(hobject,handles)

ilmoittavat, onko nappi päällä vai ei. Tuloksen voi tallentaa handles-luokkaan, jolloin jokin toinen graafinen olio voi käyttää tietoa hyväkseen. Tehtävä: Tee ohjelma, joka tulostaa message boxilla joko tekstin Hello, world! tai Terve, maailma!. Valinta tehdään radionbuttonilla siten, että oletuksena on englanti mutta radiobuttonilla voidaan valita kieleksi suomi. Popup-menu Uusi ohjelma. Lisätään sinne popup-menu: Kaksoisklikkaamalla oliota saadaan jälleen Property Inspector esille. Haetaan Stringobjekti ja määritellään sinne vaihtoehdot. Tässä esimerkissä sinne on laitettu kielet Suomi, Englanti, Ruotsi ja Saksa.

Ohjelmakoodista löytyy kohtuullisen helposti callback, joka kertoo miten menuitemit saadaan selville: % --- Executes on selection change in popupmenu1. function popupmenu1_callback(hobject, eventdata, handles) % hobject handle to popupmenu1 (see GCBO) % Hints: contents = get(hobject,'string') returns popupmenu1 contents %as cell array % contents{get(hobject,'value')} returns selected item from %popupmenu1 contents = get(hobject,'string'); contents{get(hobject,'value')}

Kun ohjelma ajetaan, tulostuu nyt komentoriville valinnan tulos. Se voidaan tallentaan handles-luokkaan Tehtävä: Tee ohjelma, joka tulostaa Terve maailma-tekstin neljällä kielellä käyttäen popupmenua. Tekstit ovat Terve maailma, Hello world, Hejsan värld, Hallo welt (viimeisestä ei ole varmuutta onko oikein,. Kysykää saksan opettajalta). Tässä esitettyjen esimerkkien avulla toivottavasti loppujenkin graafisten olioiden toiminta on ymmärrettävissä.