SlideShare a Scribd company logo
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   TCL-TK.
                                         Programowanie
           KATALOG KSI¥¯EK
                                         Autor: Dariusz Chrobak
                      KATALOG ONLINE     ISBN: 83-7197-969-X
                                         Format: B5, stron: 272
       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK
                                         Jêzyk programowania Tcl (Tool Command Language) nale¿y do licznej rodziny
                    DODAJ DO KOSZYKA     interpretowanych jêzyków skryptowych. Interpreter Tcl mo¿e zostaæ uruchomiony pod
                                         kontrol¹ wielu systemów operacyjnych, miêdzy innymi Linuksa i Windows. Aplikacja Tcl
                                         jest niemal w pe³ni niezale¿na od wyboru platformy systemowej. Tcl pozwala miêdzy
         CENNIK I INFORMACJE             innymi na uruchamiania wielu procesów (programów), korzystanie z przekierowañ
                                         wej cia-wyj cia, tworzenie potoków poleceñ i tworzenie gniazd sieciowych do
                   ZAMÓW INFORMACJE      komunikacji TCP/IP. Rozszerzeniem Tcl o trudnym do przecenienia znaczeniu jest pakiet
                     O NOWO CIACH        narzêdziowy Tk. Dziêki poleceniom Tk tworzenie i manipulowanie okienkami
                                         sk³adaj¹cymi siê na graficzny interfejs u¿ytkownika (GUI) jest niezwykle proste.
                       ZAMÓW CENNIK      Je li potrzebny jest Ci wygodny jêzyk skryptowy, w którym mo¿na szybko tworzyæ
                                         niezale¿ne od systemu operacyjnego aplikacje o rozbudowanym interfejsie u¿ytkownika,
                                         Tcl/Tk mo¿e okazaæ siê wymarzonym narzêdziem do tego celu.
                 CZYTELNIA               Ksi¹¿ka „Tcl/Tk. Programowanie” to wyczerpuj¹cy i kompletny podrêcznik tego jêzyka
          FRAGMENTY KSI¥¯EK ONLINE       programowania, wzbogacony wieloma przydatnymi przyk³adami.
                                         W ksi¹¿ce omówiono miêdzy innymi:
                                            • Podstawy Tcl, rodowisko pracy programisty
                                            • Polecenia, zmienne, wykonywanie obliczeñ, instrukcje steruj¹ce, procedury i inne
                                              elementy sk³adni jêzyka
                                            • Struktury danych: ³añcuchy i wyra¿enia regularne, listy i tablice
                                            • Korzystanie z plików, potoków i gniazd sieciowych
                                            • Pakiety i biblioteki, dostêp do baz danych
                                            • Tworzenie interfejsu u¿ytkownika z wykorzystaniem Tk
                                            • Obs³ugê zdarzeñ
                                            • Kontrolki dostêpne w Tk, tworzenie menu aplikacji
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
                Wstęp ............................................................................................... 9
Rozdział 1. Instalacja środowiska ...................................................................... 11
                Środowisko ............................................................................................................11
                Powłoka tclsh .........................................................................................................13
Rozdział 2. Podstawy Tcl................................................................................... 15
                Polecenia i zmienne ................................................................................................15
                    Polecenia..........................................................................................................15
                    Zmienne...........................................................................................................16
                    Tworzenie zmiennych .......................................................................................16
                    Usuwanie zmiennych.........................................................................................17
                    Pobieranie wartości zmiennej .............................................................................17
                Przytaczanie, lewy ukośnik, komentarze ...................................................................18
                    Przytaczanie łańcuchów.....................................................................................18
                    Przytaczanie poleceń .........................................................................................18
                    Lewy ukośnik ...................................................................................................19
                    Polecenie subst .................................................................................................19
                    Komentarze......................................................................................................20
                Obliczenia..............................................................................................................20
                    Wyra enia Tcl ..................................................................................................20
                    Funkcje matematyczne ......................................................................................21
                    Operatory.........................................................................................................22
                    Przykłady.........................................................................................................24
                        Dzielenie ....................................................................................................24
                        Mno enie....................................................................................................24
                        Dodawanie i odejmowanie ...........................................................................24
                        Porównywanie liczb i łańcuchów ..................................................................25
                        Operator warunkowy ...................................................................................25
                    Polecenie eval...................................................................................................25
                Instrukcje sterujące .................................................................................................26
                    Instrukcja warunkowa if ....................................................................................26
                    Instrukcja warunkowa switch .............................................................................27
                    Instrukcja sterująca while...................................................................................28
                    Instrukcja sterująca for ......................................................................................28
                    Instrukcja sterująca foreach ...............................................................................29
                Procedury ..............................................................................................................29
                    Definiowanie i wywoływanie procedur ...............................................................29
                    Stos wywołań ...................................................................................................31
4                                                                                                        Tcl-Tk. Programowanie


                Programowanie zdarzeniowe....................................................................................33
                   Polecenie vwait.................................................................................................34
                   Polecenie after ..................................................................................................34
                Niektóre zmienne specjalne i polecenia systemowe Tcl ..............................................35
                   Zmienne specjalne.............................................................................................35
                   Polecenia systemowe.........................................................................................37
Rozdział 3. Struktury danych ............................................................................. 43
                Łańcuchy i wyra enia regularne ...............................................................................43
                    Polecenia string.................................................................................................43
                    Polecenia: append, format, scan .........................................................................49
                    Wyra enia regularne..........................................................................................52
                Listy ......................................................................................................................56
                    Tworzenie list ...................................................................................................56
                    Operacje dotyczące list ......................................................................................57
                Tablice...................................................................................................................60
                    Tworzenie tablic ...............................................................................................60
                    Polecenia array .................................................................................................61
                Przestrzenie nazw ...................................................................................................64
                    Procedury i zmienne..........................................................................................65
                    Importowanie poleceń .......................................................................................67
                    Polecenia odło one............................................................................................67
                    Inne polecenia namespace..................................................................................68
Rozdział 4. Wymiana danych.............................................................................. 71
                Pliki.......................................................................................................................71
                    Polecenia file ....................................................................................................71
                    Polecenie glob ..................................................................................................77
                Dostęp do plików....................................................................................................78
                    Polecenia open i close........................................................................................79
                    Konfiguracja kanału IO .....................................................................................80
                    Polecenia IO oraz polecenia: tell, seek i eof.........................................................82
                    Wykorzystanie poleceń IO .................................................................................83
                    Zdarzenia IO i polecenie fileevent ......................................................................85
                Procesy, przekierowania i potoki ..............................................................................87
                    Uruchamianie podprocesów, polecenie exec ........................................................87
                    Przechwytywanie błędów ..................................................................................90
                    Wymiana danych między procesami ...................................................................91
                Gniazda .................................................................................................................92
                    Polecenie socket ...............................................................................................93
                    Komunikacja z serwerem www..........................................................................95
Rozdział 5. Pakiety i biblioteki skryptów ............................................................ 97
                Ście ki dostępu.......................................................................................................97
                Biblioteki ...............................................................................................................97
                Pakiety ..................................................................................................................99
                Dostęp do baz danych ........................................................................................... 101
Rozdział 6. Wprowadzenie do Tk...................................................................... 103
                Aplikacja Tk ........................................................................................................ 103
                Kontrolki ............................................................................................................. 106
                Tworzenie i usuwanie kontrolek ............................................................................. 107
                Zarządcy rozkładów.............................................................................................. 108
                Wymiana informacji.............................................................................................. 109
Spis treści                                                                                                                              5


Rozdział 7. Konfiguracja kontrolek................................................................... 111
                Opcje i plik zasobów............................................................................................. 111
                Rozmiary ............................................................................................................. 114
                Krawędzie............................................................................................................ 115
                Kolory ................................................................................................................. 115
                Kursor myszki ...................................................................................................... 117
                Kursor wprowadzania tekstu.................................................................................. 118
                Czcionki .............................................................................................................. 119
                Tekst i obrazki...................................................................................................... 122
                   Tekst ............................................................................................................. 122
                   Obrazki .......................................................................................................... 123
                        Obrazek typu bitmap ................................................................................. 124
                        Obrazek typu photo ................................................................................... 126
                   Polecenia związane z obrazkami....................................................................... 127
                   Wykorzystanie................................................................................................ 129
Rozdział 8. Rozkłady........................................................................................ 131
                Zarządca geometrii pack........................................................................................ 131
                    Wybór strony upakowania ............................................................................... 132
                    Wypełnianie obszarów .................................................................................... 133
                    Marginesy wewnętrzne.................................................................................... 133
                    Marginesy zewnętrzne..................................................................................... 134
                    Opcje –expand i –anchor ................................................................................. 135
                    Kolejność kontrolek ........................................................................................ 135
                    Pozostałe polecenia pack ................................................................................. 136
                Rozkład poło eniowy ............................................................................................ 137
                    Poło enie i rozmiar ......................................................................................... 137
                    Względne poło enie i względny rozmiar ........................................................... 139
                    Pozostałe polecenia place................................................................................. 139
                Rozkład siatkowy.................................................................................................. 139
                    Opcje polecenia grid........................................................................................ 140
                    Pozycjonowanie względne ............................................................................... 142
                    Konfiguracja kolumn i wierszy......................................................................... 143
                    Pozostałe polecenia grid .................................................................................. 144
Rozdział 9. Obsługa zdarzeń............................................................................. 147
                Zdarzenia ............................................................................................................. 148
                    Typy zdarzeń.................................................................................................. 148
                    Szczegóły....................................................................................................... 149
                    Modyfikatory.................................................................................................. 149
                Powiązania........................................................................................................... 150
                Pola zdarzeń......................................................................................................... 151
                Zdarzenia wirtualne............................................................................................... 152
                Skupienie ............................................................................................................. 154
                Polecenie grab ...................................................................................................... 155
                Polecenie tkwait.................................................................................................... 156
Rozdział 10. Proste kontrolki Tk ........................................................................ 157
                Klasa Frame ......................................................................................................... 157
                    Opcje............................................................................................................. 157
                    Metody .......................................................................................................... 158
                    Właściwości ................................................................................................... 158
                Klasa Toplevel...................................................................................................... 159
                    Opcje............................................................................................................. 159
                    Metody .......................................................................................................... 160
                    Właściwości ................................................................................................... 160
6                                                                                                      Tcl-Tk. Programowanie


                Klasa Label .......................................................................................................... 160
                    Opcje............................................................................................................. 160
                    Metody .......................................................................................................... 161
                    Właściwości ................................................................................................... 161
                Klasa Button ........................................................................................................ 161
                    Opcje............................................................................................................. 162
                    Metody .......................................................................................................... 163
                    Właściwości ................................................................................................... 163
                Klasa Checkbutton................................................................................................ 164
                    Opcje............................................................................................................. 164
                    Metody .......................................................................................................... 166
                    Właściwości ................................................................................................... 166
                Klasa Radiobutton................................................................................................. 167
                    Opcje............................................................................................................. 167
                    Metody .......................................................................................................... 169
                    Właściwości ................................................................................................... 169
                Klasa Message...................................................................................................... 170
                    Opcje............................................................................................................. 170
                    Metody .......................................................................................................... 171
                    Właściwości ................................................................................................... 171
                Klasa Scale........................................................................................................... 171
                    Opcje............................................................................................................. 171
                    Metody .......................................................................................................... 173
                    Właściwości ................................................................................................... 174
Rozdział 11. Menu aplikacji............................................................................... 177
                Klasa Menu.......................................................................................................... 177
                    Opcje............................................................................................................. 177
                    Metody .......................................................................................................... 178
                    Właściwości ................................................................................................... 181
                Klasa Menubutton................................................................................................. 183
                    Opcje............................................................................................................. 183
                    Metody .......................................................................................................... 184
                    Właściwości ................................................................................................... 184
                Polecenie tk_popup............................................................................................... 186
                Polecenie tk_optionMenu ...................................................................................... 186
Rozdział 12. Złożone kontrolki Tk ...................................................................... 189
                Klasa Entry .......................................................................................................... 189
                    Opcje............................................................................................................. 190
                    Metody .......................................................................................................... 191
                    Właściwości ................................................................................................... 193
                Klasa Listbox ....................................................................................................... 196
                    Opcje............................................................................................................. 196
                    Metody .......................................................................................................... 197
                    Właściwości ................................................................................................... 200
                Klasa Scrollbar ..................................................................................................... 202
                    Opcje............................................................................................................. 202
                    Metody .......................................................................................................... 203
                    Właściwości ................................................................................................... 203
                Klasa Text............................................................................................................ 204
                    Opcje............................................................................................................. 204
                    Metody .......................................................................................................... 206
Spis treści                                                                                                                            7


                    Właściwości ................................................................................................... 209
                       Markery ................................................................................................... 212
                       Znaczniki.................................................................................................. 213
                       Wbudowane okienka ................................................................................. 216
                       Wbudowane obrazki .................................................................................. 217
                Klasa Canvas........................................................................................................ 218
                    Opcje............................................................................................................. 218
                    Metody .......................................................................................................... 219
                    Właściwości ................................................................................................... 225
                    Obiekty graficzne............................................................................................ 228
                       Łuk (arc) .................................................................................................. 229
                       Mapa bitowa (bitmap)................................................................................ 231
                       Obrazek (image)........................................................................................ 232
                       Linia (line)................................................................................................ 232
                       Elipsa (oval).............................................................................................. 234
                       Wielokąt (polygon).................................................................................... 235
                       Prostokąt (rectangle) .................................................................................. 236
                       Pole tekstowe (text) ................................................................................... 237
                       Kontrolka (window)................................................................................... 238
Rozdział 13. Pozostałe polecenia Tk .................................................................. 241
                Zarządca okien platformy systemowej .................................................................... 241
                Informacje o okienkach ......................................................................................... 244
                Polecenia send i dde.............................................................................................. 247
                Polecenia i procedury tk ........................................................................................ 250
Rozdział 14. Aplikacja ....................................................................................... 255
                Trochę fizyki ........................................................................................................ 255
                Program............................................................................................................... 255
                Prezentacja programu............................................................................................ 259
                Skorowidz...................................................................................... 261
Rozdział 6.
Wprowadzenie do Tk
   Tk (Tool kit) jest pakietem narzędziowym rozszerzającym standard Tcl o dodatkowe po-
   lecenia słu ące do tworzenia graficznego interfejsu u ytkownika (GUI). Elementy GUI
   to kontrolki Tk. W dalszej części ksią ki kontrolki będą często nazywane okienkami.

   Pakiet narzędziowy Tk, oprócz poleceń tworzących kontrolki, dostarcza równie pole-
   cenia słu ące do rozmieszczania kontrolek kontenerów (mogą nimi być inne kontrolki).
   Właściwie są to zbiory poleceń nazywane najczęściej zarządcami geometrii lub za-
   rządcami rozkładu.

   Istnieją równie , a mo e przede wszystkim i takie polecenia, dzięki którym aplikacja Tk
   jest w stanie odpowiadać na ró ne zdarzenia generowane przez jej otoczenie. Dzięki
   temu kliknięcie przyciskiem myszki, gdy kursor znajduje się nad obszarem ekranu, zaj-
   mowanym przez określoną kontrolkę, mo e spowodować oczekiwaną (zaprogramowa-
   ną) przez u ytkownika reakcję aplikacji.

   Inną zaletą pakietu Tk jest wysoki stopień niezale ności kodu aplikacji od wyboru plat-
   formy systemowej. Czy będzie to popularny system Windows, czy nieco bardziej wyma-
   gający X Window System dla platformy Linux, kontrolki Tk będą funkcjonowały niemal
   tak samo. Występujące drobne ró nice nie powinny mieć większego wpływu na jakość
   tworzonego GUI.

   Bie ący rozdział wprowadza niezbędne pojęcia związane z programowaniem przy u y-
   ciu pakietu narzędziowego Tk, pokazując przy tym współdziałanie oraz zale ności po-
   między poszczególnymi elementami graficznego interfejsu u ytkownika.



Aplikacja Tk
   Aplikacja Tk to wykonywany przez powłokę wish skrypt Tcl wzbogacony poleceniami
   pakietu narzędziowego Tk. Na skrypt Tcl-Tk składają się dwie zasadnicze części:
        część inicjująca graficzny interfejs u ytkownika — GUI;
        procedury obsługi zdarzeń.
104                                                                      Tcl-Tk. Programowanie


         Po wykonaniu poleceń inicjujących GUI, aplikacja Tk oczekuje na zdarzenia genero-
         wane przez jej otoczenie. Na zajście zdarzenia aplikacja mo e odpowiedzieć wykona-
         niem odpowiedniej procedury obsługi.

         Uruchomienie powłoki wish spowoduje pojawienie się głównego okna aplikacji. W sys-
         temie Windows dodatkowo pojawi się konsola (rysunek 1.3), okienko umo liwiające po-
         rozumiewanie się z programem powłoki. Główne okno aplikacji to pewien wyró nio-
         ny obszar ekranu, wokół którego zarządca okien utworzy „trójwymiarowe” krawędzie
         oraz doda pasek tytułowy wraz z kilkoma przyciskami, umo liwiającymi zmianę rozmia-
         rów czy te zamknięcie okna. To ostanie działanie jest równoznaczne z zakończeniem
         działania aplikacji. Wygląd głównego okna aplikacji jest uzale niony od rodzaju plat-
         formy systemowej, na której uruchomiono powłokę wish.

         Po uruchomieniu powłoki poleceniem YKUJ (w systemie Linux) lub YKUJGZG (w sys-
         temie Windows) mo na wydać kilka poleceń, tworząc prosty GUI (rysunek 6.1).
                DWVVQP D VGZV ]COMPKL QMKGPMQ_ EQOOCPF ]FGUVTQ[ _
                D
                RCEM D RCFZ  RCF[ 
            

Rysunek 6.1.
Konsola i przycisk
w głównym
oknie aplikacji


         Powy szy przykład pokazuje hierarchiczną strukturę kontrolek aplikacji Tk. W głów-
         nym oknie aplikacji pojawiło się okienko wewnętrzne (przycisk), którego kliknięcie
         spowoduje zakończenie działania programu. Proszę zwrócić uwagę na nazwę przycisku:
         D. Podstawową cechą okienek wewnętrznych jest to, e nie mogą być wyświetlane poza
         obszarem okienka, w którym się pojawiły. Mo na to łatwo sprawdzić, zmieniając myszką
         rozmiar głównego okna aplikacji.

         Kolejnym rodzajem okienek Tk są tak zwane okienka wysokiego poziomu. Jedno z nich,
         utworzone poleceniem
                VQRNGXGN C
                C

         zostało pokazane na rysunku 6.2. Okienka wysokiego poziomu tym ró nią się od okienek
         wewnętrznych, e wyświetlane są niezale nie od głównego okna aplikacji. Podobnie te
         są traktowane przez zarządcę okien platformy systemowej. Zniszczenie głównego okna
         aplikacji spowoduje zniszczenie okienek wysokiego poziomu, ale nie odwrotnie.

         Aplikację Tk mo na uruchomić jednym z poni szych poleceń. Dla systemu Windows
         będzie to polecenie:
            YKUJGZG !PCYC2NKMW! !QRELG! !CTI CTI CTI !

         Dla systemu Linux polecenie to będzie miało następującą formę:
            YKUJ !PCYC2NKMW! !QRELG! !CTI CTI CTI !
Rozdział 6. ♦ Wprowadzenie do Tk                                                             105


Rysunek 6.2.
Główne okno
aplikacji wraz
z okienkiem
wysokiego poziomu




        Argument PCYC2NKMW jest nazwą skryptu Tcl-Tk. Spośród kilku dostępnych opcji
        wspomnę o jednej:

         IGQOGVT[ IGQOGVTKC
               Opcja ta pozwala określić początkowe poło enie i rozmiar głównego okna
               aplikacji. Argument IGQOGVTKC powinien mieć następujący format:
                 UGTQMQ èZY[UQMQ è±Z±[
               Wszystkie wielkości podawane są w jednostkach ekranu (piksele, punkty,
               milimetry, centymetry, cale). Znak 
Z (Z) oznacza odległość lewej (prawej)
               krawędzi okienka od lewej (prawej) krawędzi ekranu. Podobnie 
[ ([)
               oznacza odległość górnej (dolnej) krawędzi okienka od górnej (dolnej)
               krawędzi ekranu.

        Argumenty CTI CTI  stanowią listę wartości przekazywanych do aplikacji. Powło-
        ka wish, rozpoczynając wykonywanie skryptu, tworzy pięć zmiennych:

        CTIE
               Jest to liczba całkowita określająca ilość argumentów przekazywanych
               do skryptu. W przypadku ich braku wartością CTIE jest liczba 0.

        CTIX
               Jest to łańcuch znaków zawierający, oddzielone spacjami, argumenty skryptu.
               Je eli ich nie podano, łańcuch CTIX jest pusty.

        CTIX
               Jest to łańcuch zawierający nazwę uruchomionego skryptu. W przeciwnym
               razie łańcuch CTIX jest pusty.

        IGQOGVT[
               Ten zapis oznacza, e zmiennej przypisywana jest wartość opcji IGQOGVT[.

        VENAKPVGTCEVKXG
               Ta zmienna przyjmuje wartość 1, je eli interpreter został uruchomiony
               w trybie interaktywnym, bez specyfikacji nazwy skryptu. W przeciwnym
               razie zmienna przyjmuje wartość 0.
106                                                                     Tcl-Tk. Programowanie



Kontrolki
        Kontrolki Tk to okienka posiadające charakterystyczne właściwości, w tym charakte-
        rystyczne cechy graficzne. Kontrolki podzielone są na klasy. Nazwa klasy rozpoczy-
        na się od du ej litery, np. $WVVQP (przycisk) i jest zwracana przez polecenie
           YO ENCUU MQPVTQNMC

        gdzie MQPVTQNMC jest nazwą kontrolki. Na przykład po tworzeniu pola wejściowego
        poleceniem
               GPVT[ G
               G

        kolejne polecenie zwróci nazwę klasy:
               YO ENCUU G
               'PVT[

        Kontrolki nale ące do tej samej klasy charakteryzują się tym samym zestawem opcji
        konfiguracyjnych, dzięki którym mo liwe jest nadanie im indywidualnego wyglądu i spo-
        sobu działania. Na przykład ka da kontrolka wspomnianej ju klasy $WVVQP mo e wy-
        świetlać jeden z elementów: tekst, bitmapę lub obrazek (rysunek 6.3) i mo e w ró ny spo-
        sób reagować, powiedzmy na kliknięcie przyciskiem myszki.

Rysunek 6.3.
Indywidualne cechy
wyglądu kontrolek
klasy Button




        Lista standardowych klas kontrolek dostarczanych w pakiecie narzędziowym Tk jest
        wystarczająco obszerna, by móc tworzyć nawet skomplikowane GUI. W dalszych roz-
        działach ksią ki opisane zostaną następujące klasy kontrolek:
               $WVVQP (przycisk)
               (TCOG (ramka)

               %CPXCU (płótno)
               %JGEMDWVVQP (pole wyboru)
               'PVT[ (pole wejściowe)
               +OCIG (element graficzny)
               .CDGN (etykieta)

               .KUVDQZ (lista wyboru)
               /GPW (pasek menu)
               /GPWDWVVQP (przycisk menu)
Rozdział 6. ♦ Wprowadzenie do Tk                                                             107


            /GUUCIG (wiadomość)
            4CFKQDWVVQP (pole opcji)
            5ECNG (skala)
            5ETQNNDCT (pasek przewijania)
            6GZV (pole tekstowe)
            6QRNGXGN (okno wysokiego poziomu)

       Jak ju wspomniano, okienka aplikacji Tk zorganizowane są w sposób hierarchiczny.
       Na szczycie znajduje się główne okno aplikacji. Jest ono rodzicem (kontenerem) dla
       wszystkich pozostałych kontrolek (nawet okienek wysokiego poziomu), które z kolei
       równie mogą być rodzicami innych okienek. Ta struktura odbija się w sposobie identy-
       fikacji kontrolek. Mo na mówić o ście kach nazw lub drzewiastej strukturze kontro-
       lek aplikacji Tk. Zapis CDE oznacza, i okienko E jest dzieckiem okienka D, którego
       rodzicem jest okienko C, będące bezpośrednim potomkiem głównego okna aplikacji .

       Ście ki nazw, chocia mogą nasuwać porównania z techniką programowania obiekto-
       wego (C++, Java), nie mają z nią nic wspólnego. Określają kontener dla kontrolek usy-
       tuowanych w hierarchii o jeden szczebel ni ej.



Tworzenie i usuwanie kontrolek
       Polecenie o nazwie takiej samej jak nazwa klasy, ale rozpoczynające się od małej lite-
       ry jest nazwą polecenia tworzącego kontrolkę. Ogólna postać takiego polecenia jest
       następująca:
          MNCUC MQPVTQNMC !QRELC YCTV !

       Argument MNCUC odpowiada klasie kontrolki Tk. Argument MQPVTQNMC jest ście ką na-
       zwy kontrolki, a argumenty QRELC i YCTV są odpowiednio przełącznikiem opcji konfi-
       guracyjnej i jej wartością. Przełącznik opcji (dalej opcja) jest konstrukcją składającą się
       z myślnika i nazwy opcji (np.: DCEMITQWPF). Polecenie zwraca nazwę kontrolki.

       Interesujące jest to, e ście ka nazwy utworzonej kontrolki sama staje się nazwą pole-
       cenia. Wynika stąd, e kontrolki posiadają własne zestawy poleceń, których postać
       jest następująca:
          MQPVTQNMC CTI !CTI !

       Argument CTI, nazywany modyfikatorem, jest obowiązkowy, poniewa definiuje ope-
       rację wykonywaną przez lub na kontrolce MQPVTQNMC. Analogicznie do konstrukcji
       obiektowych mo na powiedzieć, e modyfikator określa metodę obiektu reprezentują-
       cego kontrolkę. Polecenie
          MQPVTQNMC EIGV QRELC

       zwraca aktualną wartość opcji QRELC kontrolki MQPVTQNMC, a polecenie
108                                                                    Tcl-Tk. Programowanie


            MQPVTQNMC EQPHKIWTG !QRELC! !YCTV QRELC YCTV !

         umo liwia zmianę wartości wybranej opcji, czy te zwraca aktualną wartość jednej
         lub wszystkich opcji.

         Wypróbujmy:
              DWVVQP D VGZV ]-NKMPKL OPKG_
              D
              D EIGV VGZV
             -NKMPKL OPKG

         Usunięcie jednej lub kilku kontrolek jest równie proste, jak ich tworzenie. Wystarczy
         wykonać polecenie FGUVTQ[ z argumentem będącym listą ście ek nazw kontrolek prze-
         znaczonych do usunięcia:
            FGUVTQ[ MQPVTQNMC !MQPVTQNMC !

         Mo emy teraz usunąć przycisk z ostatniego przykładu:
                FGUVTQ[ D
            
                D EIGV VGZV
                KPXCNKF EQOOCPF PCOG   D

         Rzeczywiście, przycisk został zniszczony, o czym świadczy reakcja powłoki wish na
         próbę pobrania wartości jednej z opcji konfiguracyjnych (VGZV).



Zarządcy rozkładów
         O ostatecznych rozmiarach i poło eniach kontrolek w obszarze GUI decydują zarząd-
         cy rozkładu (rysunek 6.4). Ka dy z nich w charakterystyczny dla siebie sposób roz-
         mieszcza grupę kontrolek w ich kontenerze. Zarządca RNCEG jest najprostszy i wyma-
         ga jawnego określenia takich parametrów, jak: szerokość, wysokość, a tak e współrzędne
         lewego górnego rogu kontrolki. Kolejny zarządca, RCEM, stara się upakować kontrolki,
         minimalizując ich rozmiary. Jego działanie jest konsekwencją narzucenia pewnych
         warunków, na przykład takiego, który nakazuje umieszczenie kontrolki przy lewej
         krawędzi dostępnego obszaru. Ostatnim standardowym zarządcą geometrii jest ITKF,
         grupujący kontrolki w komórkach siatki.

Rysunek 6.4.
Efekt rozmieszczenia
trzech przycisków
przez zarządców:
place, pack i grid
Rozdział 6. ♦ Wprowadzenie do Tk                                                        109



Wymiana informacji
       Aplikacja Tk wymienia dane z u ytkownikiem, innymi aplikacjami, a tak e z zarządcą
       okien platformy systemowej. Prawie zawsze zamierzona praca aplikacji wymaga współ-
       działania pomiędzy poszczególnymi jej elementami — kontrolkami.

       U ytkownik generuje zdarzenia, korzystając z urządzeń peryferyjnych: myszki lub
       klawiatury. Źródłem zdarzenia staje się ta z kontrolek aplikacji, której bezpośrednio
       dotyczy operacja wykonana myszką lub klawiaturą (typ zdarzenia). Z ka dym typem
       zdarzenia oraz jego źródłem mo na poleceniem DKPF powiązać procedurę obsługi wy-
       konywaną w odpowiedzi na zajście zdarzenia. Na tym właśnie polega tak zwane zda-
       rzeniowe oprogramowanie GUI. U ytkownik generuje zdarzenia, po czym aplikacja
       odpowiada wykonaniem dedykowanej procedury obsługi.

       O ile do zajścia zdarzenia związanego z myszką wystarcza wprowadzenie jej kursora
       nad obszar kontrolki (zdarzenie typu 'PVGT ), o tyle reakcja na zdarzenia klawiatury
       uzale niona jest od tego, która z kontrolek aplikacji posiada skupienie (focus). W da-
       nej chwili, w odpowiedzi na zdarzenia klawiatury, mogą być wykonywane skrypty
       obsługi powiązane tylko z jedną kontrolką, tą właśnie która aktualnie posiada skupie-
       nie. Sposób zmiany skupienia uzale niony jest od klasy kontrolki. Dla okienek z klas
       'PVT[ lub 6GZV wystarczy kliknięcie nad ich obszarem lewym przyciskiem myszki, a dla
       kontrolek z klas $WVVQP czy %JGEMDWVVQP konieczne jest u ycie kombinacji klawiszy
       Tab lub Shift+Tab. Inne z kontrolek, na przykład nale ące do klasy (TCOG, mogą
       przyjmować skupienie tylko w wyniku wykonania polecenia HQEWU.

       Czasem zachodzi potrzeba ograniczenia reakcji na zachodzące zdarzenia tylko do jed-
       nego drzewa kontrolek. Mechanizm ten, realizowany przez polecenie ITCD, jest najczę-
       ściej wykorzystywany do budowy okienek dialogowych.

       Inny sposób interakcji u ytkownika z aplikacją polega na wykorzystaniu opcji
       EQOOCPF kontrolek nale ących do takich klas, jak: $WVVQP, %JGEMDWVVQP i 4CFKQDWVVQP.
       Opcja EQOOCPF umo liwia, bez konieczności korzystania z polecenia DKPF, zdefinio-
       wanie skryptu wykonywanego po kliknięciu lewego przycisku myszki nad obszarem
       wybranego okienka.

       Wymieniać informacje mogą równie dwie działające niezale ne od siebie aplikacje.
       Polecenie UGPF wysyła skrypt Tcl do innej aplikacji, gdzie jest wykonywany. Następnie
       wynik zostaje zwrócony do aplikacji wysyłającej. W ten sposób pewne zadania infor-
       matyczne mo na przydzielić do wykonania kilku programom.

       Specyficznym oddziaływaniem pomiędzy aplikacją Tk, a jej otoczeniem jest wykorzy-
       stanie zarządcy okien platformy systemowej do zmiany geometrii głównego okienka
       aplikacji oraz okienek wysokiego poziomu. Korzystając ze zbioru poleceń YO, mo na
       dodatkowo sprecyzować szereg innych parametrów kontrolek wysokiego poziomu.

       Jak wspomniano wy ej, współpraca pomiędzy samymi okienkami równie nie nale y
       do wyjątków. Kontrolki klas %CPXCU, 'PVT[, .KUVDQZ, 6GZV mo na łączyć z paskami
       przewijania (5ETQNNDCT). W tym przypadku poło enie suwaka na pasku przewijania jest
       odwzorowywane na widzialny obszar powiązanego z nim okienka.

More Related Content

PDF
Mistrzowska edycja zdjęć. Adobe Photoshop CS3 PL dla fotografów
PDF
Mandrake Linux. Ćwiczenia zaawansowane
PDF
Linux. Kurs. Wydanie II
PDF
Access w biurze i nie tylko
PDF
Red Hat Linux 8. Ćwiczenia praktyczne
PDF
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
PDF
CorelDraw X3 PL. Kurs
PDF
Cubase SX 3 dla zapaleńców
Mistrzowska edycja zdjęć. Adobe Photoshop CS3 PL dla fotografów
Mandrake Linux. Ćwiczenia zaawansowane
Linux. Kurs. Wydanie II
Access w biurze i nie tylko
Red Hat Linux 8. Ćwiczenia praktyczne
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
CorelDraw X3 PL. Kurs
Cubase SX 3 dla zapaleńców

What's hot (20)

PDF
Po prostu Photoshop CS3/ CS3 PL
PDF
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
PDF
Windows Vista PL. Zabawa z multimediami
PDF
Mandrake Linux. Ćwiczenia
PDF
Aurox. Ćwiczenia
PDF
Po prostu QuarkXPress 5
PDF
Linux. Kurs
PDF
Oracle Database 11g. Programowanie w języku PL/SQL
PDF
OpenOffice. Ćwiczenia
PDF
Po prostu Pajączek 5 NxG
PDF
Programowanie w języku C. Szybki start
PDF
Cubase SX. Szybki start
PDF
Windows XP PL. Ilustrowany przewodnik
PDF
Po prostu CorelDRAW 11
PDF
Excel 2003 PL. Ilustrowany przewodnik
PDF
Jak działa Linux
PDF
Uczta programistów
PDF
Po prostu Flash MX 2004
PDF
Anatomia PC. Wydanie IX
PDF
Rozbudowa i naprawa komputera. Kompendium. Wydanie drugie
Po prostu Photoshop CS3/ CS3 PL
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Windows Vista PL. Zabawa z multimediami
Mandrake Linux. Ćwiczenia
Aurox. Ćwiczenia
Po prostu QuarkXPress 5
Linux. Kurs
Oracle Database 11g. Programowanie w języku PL/SQL
OpenOffice. Ćwiczenia
Po prostu Pajączek 5 NxG
Programowanie w języku C. Szybki start
Cubase SX. Szybki start
Windows XP PL. Ilustrowany przewodnik
Po prostu CorelDRAW 11
Excel 2003 PL. Ilustrowany przewodnik
Jak działa Linux
Uczta programistów
Po prostu Flash MX 2004
Anatomia PC. Wydanie IX
Rozbudowa i naprawa komputera. Kompendium. Wydanie drugie
Ad

Viewers also liked (7)

DOC
Linia demarkacyjna na lata 2014-2020 (wersja: listopad 2013)
PDF
Kodeks postępowania administracyjnego
PDF
Protokoły SNMP i RMON. Vademecum profesjonalisty
PDF
32943520 sztuka-jako-źrodło-do-badania-historii-czy-historiografia-jest-sztuk...
PDF
Pamiętniki hakerów
Linia demarkacyjna na lata 2014-2020 (wersja: listopad 2013)
Kodeks postępowania administracyjnego
Protokoły SNMP i RMON. Vademecum profesjonalisty
32943520 sztuka-jako-źrodło-do-badania-historii-czy-historiografia-jest-sztuk...
Pamiętniki hakerów
Ad

Similar to Tcl-Tk. Programowanie (20)

PDF
C#. Ćwiczenia
PDF
Delphi. Szybki start
PDF
TCP/IP dla każdego
PDF
.Net. Najpilniej strzeżone tajemnice
PDF
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java
PDF
Język C. Wskaźniki. Vademecum profesjonalisty
PDF
PDF
Prolog. Programowanie
PDF
Visual Basic 2008. Warsztat programisty
PDF
Praktyczny kurs SQL
PDF
Visual C# 2005 Express Edition. Od podstaw
PDF
C++BuilderX. Ćwiczenia
PDF
Aplikacje w Delphi. Przykłady. Wydanie II
PDF
Programowanie w języku C. FAQ
PDF
Windows PowerShell. Podstawy
PDF
Linux dla programistów i użytkowników
PDF
C++. Styl i technika zaawansowanego programowania
PDF
C++. Wykorzystaj potęgę aplikacji graficznych
PDF
C++Builder i Turbo C++. Podstawy
PDF
Język C++. Gotowe rozwiązania dla programistów
C#. Ćwiczenia
Delphi. Szybki start
TCP/IP dla każdego
.Net. Najpilniej strzeżone tajemnice
Eclipse Web Tools Platform. Tworzenie aplikacji WWW w języku Java
Język C. Wskaźniki. Vademecum profesjonalisty
Prolog. Programowanie
Visual Basic 2008. Warsztat programisty
Praktyczny kurs SQL
Visual C# 2005 Express Edition. Od podstaw
C++BuilderX. Ćwiczenia
Aplikacje w Delphi. Przykłady. Wydanie II
Programowanie w języku C. FAQ
Windows PowerShell. Podstawy
Linux dla programistów i użytkowników
C++. Styl i technika zaawansowanego programowania
C++. Wykorzystaj potęgę aplikacji graficznych
C++Builder i Turbo C++. Podstawy
Język C++. Gotowe rozwiązania dla programistów

More from Wydawnictwo Helion (20)

PDF
Tworzenie filmów w Windows XP. Projekty
PDF
Blog, więcej niż internetowy pamiętnik
PDF
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
PDF
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
PDF
Makrofotografia. Magia szczegółu
PDF
Java. Efektywne programowanie. Wydanie II
PDF
JavaScript. Pierwsze starcie
PDF
Ajax, JavaScript i PHP. Intensywny trening
PDF
PowerPoint 2007 PL. Seria praktyk
PDF
Excel 2007 PL. Seria praktyk
PDF
Access 2007 PL. Seria praktyk
PDF
Word 2007 PL. Seria praktyk
PDF
Serwisy społecznościowe. Budowa, administracja i moderacja
PDF
AutoCAD 2008 i 2008 PL
PDF
Bazy danych. Pierwsze starcie
PDF
Inventor. Pierwsze kroki
PDF
Serwer SQL 2008. Administracja i programowanie
PDF
USB. Praktyczne programowanie z Windows API w C++
PDF
Microsoft Visual Studio 2008. Księga eksperta
PDF
Rewizor GT. Prowadzenie ewidencji księgowej
Tworzenie filmów w Windows XP. Projekty
Blog, więcej niż internetowy pamiętnik
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Makrofotografia. Magia szczegółu
Java. Efektywne programowanie. Wydanie II
JavaScript. Pierwsze starcie
Ajax, JavaScript i PHP. Intensywny trening
PowerPoint 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
Serwisy społecznościowe. Budowa, administracja i moderacja
AutoCAD 2008 i 2008 PL
Bazy danych. Pierwsze starcie
Inventor. Pierwsze kroki
Serwer SQL 2008. Administracja i programowanie
USB. Praktyczne programowanie z Windows API w C++
Microsoft Visual Studio 2008. Księga eksperta
Rewizor GT. Prowadzenie ewidencji księgowej

Tcl-Tk. Programowanie

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI TCL-TK. Programowanie KATALOG KSI¥¯EK Autor: Dariusz Chrobak KATALOG ONLINE ISBN: 83-7197-969-X Format: B5, stron: 272 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK Jêzyk programowania Tcl (Tool Command Language) nale¿y do licznej rodziny DODAJ DO KOSZYKA interpretowanych jêzyków skryptowych. Interpreter Tcl mo¿e zostaæ uruchomiony pod kontrol¹ wielu systemów operacyjnych, miêdzy innymi Linuksa i Windows. Aplikacja Tcl jest niemal w pe³ni niezale¿na od wyboru platformy systemowej. Tcl pozwala miêdzy CENNIK I INFORMACJE innymi na uruchamiania wielu procesów (programów), korzystanie z przekierowañ wej cia-wyj cia, tworzenie potoków poleceñ i tworzenie gniazd sieciowych do ZAMÓW INFORMACJE komunikacji TCP/IP. Rozszerzeniem Tcl o trudnym do przecenienia znaczeniu jest pakiet O NOWO CIACH narzêdziowy Tk. Dziêki poleceniom Tk tworzenie i manipulowanie okienkami sk³adaj¹cymi siê na graficzny interfejs u¿ytkownika (GUI) jest niezwykle proste. ZAMÓW CENNIK Je li potrzebny jest Ci wygodny jêzyk skryptowy, w którym mo¿na szybko tworzyæ niezale¿ne od systemu operacyjnego aplikacje o rozbudowanym interfejsie u¿ytkownika, Tcl/Tk mo¿e okazaæ siê wymarzonym narzêdziem do tego celu. CZYTELNIA Ksi¹¿ka „Tcl/Tk. Programowanie” to wyczerpuj¹cy i kompletny podrêcznik tego jêzyka FRAGMENTY KSI¥¯EK ONLINE programowania, wzbogacony wieloma przydatnymi przyk³adami. W ksi¹¿ce omówiono miêdzy innymi: • Podstawy Tcl, rodowisko pracy programisty • Polecenia, zmienne, wykonywanie obliczeñ, instrukcje steruj¹ce, procedury i inne elementy sk³adni jêzyka • Struktury danych: ³añcuchy i wyra¿enia regularne, listy i tablice • Korzystanie z plików, potoków i gniazd sieciowych • Pakiety i biblioteki, dostêp do baz danych • Tworzenie interfejsu u¿ytkownika z wykorzystaniem Tk • Obs³ugê zdarzeñ • Kontrolki dostêpne w Tk, tworzenie menu aplikacji Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Wstęp ............................................................................................... 9 Rozdział 1. Instalacja środowiska ...................................................................... 11 Środowisko ............................................................................................................11 Powłoka tclsh .........................................................................................................13 Rozdział 2. Podstawy Tcl................................................................................... 15 Polecenia i zmienne ................................................................................................15 Polecenia..........................................................................................................15 Zmienne...........................................................................................................16 Tworzenie zmiennych .......................................................................................16 Usuwanie zmiennych.........................................................................................17 Pobieranie wartości zmiennej .............................................................................17 Przytaczanie, lewy ukośnik, komentarze ...................................................................18 Przytaczanie łańcuchów.....................................................................................18 Przytaczanie poleceń .........................................................................................18 Lewy ukośnik ...................................................................................................19 Polecenie subst .................................................................................................19 Komentarze......................................................................................................20 Obliczenia..............................................................................................................20 Wyra enia Tcl ..................................................................................................20 Funkcje matematyczne ......................................................................................21 Operatory.........................................................................................................22 Przykłady.........................................................................................................24 Dzielenie ....................................................................................................24 Mno enie....................................................................................................24 Dodawanie i odejmowanie ...........................................................................24 Porównywanie liczb i łańcuchów ..................................................................25 Operator warunkowy ...................................................................................25 Polecenie eval...................................................................................................25 Instrukcje sterujące .................................................................................................26 Instrukcja warunkowa if ....................................................................................26 Instrukcja warunkowa switch .............................................................................27 Instrukcja sterująca while...................................................................................28 Instrukcja sterująca for ......................................................................................28 Instrukcja sterująca foreach ...............................................................................29 Procedury ..............................................................................................................29 Definiowanie i wywoływanie procedur ...............................................................29 Stos wywołań ...................................................................................................31
  • 3. 4 Tcl-Tk. Programowanie Programowanie zdarzeniowe....................................................................................33 Polecenie vwait.................................................................................................34 Polecenie after ..................................................................................................34 Niektóre zmienne specjalne i polecenia systemowe Tcl ..............................................35 Zmienne specjalne.............................................................................................35 Polecenia systemowe.........................................................................................37 Rozdział 3. Struktury danych ............................................................................. 43 Łańcuchy i wyra enia regularne ...............................................................................43 Polecenia string.................................................................................................43 Polecenia: append, format, scan .........................................................................49 Wyra enia regularne..........................................................................................52 Listy ......................................................................................................................56 Tworzenie list ...................................................................................................56 Operacje dotyczące list ......................................................................................57 Tablice...................................................................................................................60 Tworzenie tablic ...............................................................................................60 Polecenia array .................................................................................................61 Przestrzenie nazw ...................................................................................................64 Procedury i zmienne..........................................................................................65 Importowanie poleceń .......................................................................................67 Polecenia odło one............................................................................................67 Inne polecenia namespace..................................................................................68 Rozdział 4. Wymiana danych.............................................................................. 71 Pliki.......................................................................................................................71 Polecenia file ....................................................................................................71 Polecenie glob ..................................................................................................77 Dostęp do plików....................................................................................................78 Polecenia open i close........................................................................................79 Konfiguracja kanału IO .....................................................................................80 Polecenia IO oraz polecenia: tell, seek i eof.........................................................82 Wykorzystanie poleceń IO .................................................................................83 Zdarzenia IO i polecenie fileevent ......................................................................85 Procesy, przekierowania i potoki ..............................................................................87 Uruchamianie podprocesów, polecenie exec ........................................................87 Przechwytywanie błędów ..................................................................................90 Wymiana danych między procesami ...................................................................91 Gniazda .................................................................................................................92 Polecenie socket ...............................................................................................93 Komunikacja z serwerem www..........................................................................95 Rozdział 5. Pakiety i biblioteki skryptów ............................................................ 97 Ście ki dostępu.......................................................................................................97 Biblioteki ...............................................................................................................97 Pakiety ..................................................................................................................99 Dostęp do baz danych ........................................................................................... 101 Rozdział 6. Wprowadzenie do Tk...................................................................... 103 Aplikacja Tk ........................................................................................................ 103 Kontrolki ............................................................................................................. 106 Tworzenie i usuwanie kontrolek ............................................................................. 107 Zarządcy rozkładów.............................................................................................. 108 Wymiana informacji.............................................................................................. 109
  • 4. Spis treści 5 Rozdział 7. Konfiguracja kontrolek................................................................... 111 Opcje i plik zasobów............................................................................................. 111 Rozmiary ............................................................................................................. 114 Krawędzie............................................................................................................ 115 Kolory ................................................................................................................. 115 Kursor myszki ...................................................................................................... 117 Kursor wprowadzania tekstu.................................................................................. 118 Czcionki .............................................................................................................. 119 Tekst i obrazki...................................................................................................... 122 Tekst ............................................................................................................. 122 Obrazki .......................................................................................................... 123 Obrazek typu bitmap ................................................................................. 124 Obrazek typu photo ................................................................................... 126 Polecenia związane z obrazkami....................................................................... 127 Wykorzystanie................................................................................................ 129 Rozdział 8. Rozkłady........................................................................................ 131 Zarządca geometrii pack........................................................................................ 131 Wybór strony upakowania ............................................................................... 132 Wypełnianie obszarów .................................................................................... 133 Marginesy wewnętrzne.................................................................................... 133 Marginesy zewnętrzne..................................................................................... 134 Opcje –expand i –anchor ................................................................................. 135 Kolejność kontrolek ........................................................................................ 135 Pozostałe polecenia pack ................................................................................. 136 Rozkład poło eniowy ............................................................................................ 137 Poło enie i rozmiar ......................................................................................... 137 Względne poło enie i względny rozmiar ........................................................... 139 Pozostałe polecenia place................................................................................. 139 Rozkład siatkowy.................................................................................................. 139 Opcje polecenia grid........................................................................................ 140 Pozycjonowanie względne ............................................................................... 142 Konfiguracja kolumn i wierszy......................................................................... 143 Pozostałe polecenia grid .................................................................................. 144 Rozdział 9. Obsługa zdarzeń............................................................................. 147 Zdarzenia ............................................................................................................. 148 Typy zdarzeń.................................................................................................. 148 Szczegóły....................................................................................................... 149 Modyfikatory.................................................................................................. 149 Powiązania........................................................................................................... 150 Pola zdarzeń......................................................................................................... 151 Zdarzenia wirtualne............................................................................................... 152 Skupienie ............................................................................................................. 154 Polecenie grab ...................................................................................................... 155 Polecenie tkwait.................................................................................................... 156 Rozdział 10. Proste kontrolki Tk ........................................................................ 157 Klasa Frame ......................................................................................................... 157 Opcje............................................................................................................. 157 Metody .......................................................................................................... 158 Właściwości ................................................................................................... 158 Klasa Toplevel...................................................................................................... 159 Opcje............................................................................................................. 159 Metody .......................................................................................................... 160 Właściwości ................................................................................................... 160
  • 5. 6 Tcl-Tk. Programowanie Klasa Label .......................................................................................................... 160 Opcje............................................................................................................. 160 Metody .......................................................................................................... 161 Właściwości ................................................................................................... 161 Klasa Button ........................................................................................................ 161 Opcje............................................................................................................. 162 Metody .......................................................................................................... 163 Właściwości ................................................................................................... 163 Klasa Checkbutton................................................................................................ 164 Opcje............................................................................................................. 164 Metody .......................................................................................................... 166 Właściwości ................................................................................................... 166 Klasa Radiobutton................................................................................................. 167 Opcje............................................................................................................. 167 Metody .......................................................................................................... 169 Właściwości ................................................................................................... 169 Klasa Message...................................................................................................... 170 Opcje............................................................................................................. 170 Metody .......................................................................................................... 171 Właściwości ................................................................................................... 171 Klasa Scale........................................................................................................... 171 Opcje............................................................................................................. 171 Metody .......................................................................................................... 173 Właściwości ................................................................................................... 174 Rozdział 11. Menu aplikacji............................................................................... 177 Klasa Menu.......................................................................................................... 177 Opcje............................................................................................................. 177 Metody .......................................................................................................... 178 Właściwości ................................................................................................... 181 Klasa Menubutton................................................................................................. 183 Opcje............................................................................................................. 183 Metody .......................................................................................................... 184 Właściwości ................................................................................................... 184 Polecenie tk_popup............................................................................................... 186 Polecenie tk_optionMenu ...................................................................................... 186 Rozdział 12. Złożone kontrolki Tk ...................................................................... 189 Klasa Entry .......................................................................................................... 189 Opcje............................................................................................................. 190 Metody .......................................................................................................... 191 Właściwości ................................................................................................... 193 Klasa Listbox ....................................................................................................... 196 Opcje............................................................................................................. 196 Metody .......................................................................................................... 197 Właściwości ................................................................................................... 200 Klasa Scrollbar ..................................................................................................... 202 Opcje............................................................................................................. 202 Metody .......................................................................................................... 203 Właściwości ................................................................................................... 203 Klasa Text............................................................................................................ 204 Opcje............................................................................................................. 204 Metody .......................................................................................................... 206
  • 6. Spis treści 7 Właściwości ................................................................................................... 209 Markery ................................................................................................... 212 Znaczniki.................................................................................................. 213 Wbudowane okienka ................................................................................. 216 Wbudowane obrazki .................................................................................. 217 Klasa Canvas........................................................................................................ 218 Opcje............................................................................................................. 218 Metody .......................................................................................................... 219 Właściwości ................................................................................................... 225 Obiekty graficzne............................................................................................ 228 Łuk (arc) .................................................................................................. 229 Mapa bitowa (bitmap)................................................................................ 231 Obrazek (image)........................................................................................ 232 Linia (line)................................................................................................ 232 Elipsa (oval).............................................................................................. 234 Wielokąt (polygon).................................................................................... 235 Prostokąt (rectangle) .................................................................................. 236 Pole tekstowe (text) ................................................................................... 237 Kontrolka (window)................................................................................... 238 Rozdział 13. Pozostałe polecenia Tk .................................................................. 241 Zarządca okien platformy systemowej .................................................................... 241 Informacje o okienkach ......................................................................................... 244 Polecenia send i dde.............................................................................................. 247 Polecenia i procedury tk ........................................................................................ 250 Rozdział 14. Aplikacja ....................................................................................... 255 Trochę fizyki ........................................................................................................ 255 Program............................................................................................................... 255 Prezentacja programu............................................................................................ 259 Skorowidz...................................................................................... 261
  • 7. Rozdział 6. Wprowadzenie do Tk Tk (Tool kit) jest pakietem narzędziowym rozszerzającym standard Tcl o dodatkowe po- lecenia słu ące do tworzenia graficznego interfejsu u ytkownika (GUI). Elementy GUI to kontrolki Tk. W dalszej części ksią ki kontrolki będą często nazywane okienkami. Pakiet narzędziowy Tk, oprócz poleceń tworzących kontrolki, dostarcza równie pole- cenia słu ące do rozmieszczania kontrolek kontenerów (mogą nimi być inne kontrolki). Właściwie są to zbiory poleceń nazywane najczęściej zarządcami geometrii lub za- rządcami rozkładu. Istnieją równie , a mo e przede wszystkim i takie polecenia, dzięki którym aplikacja Tk jest w stanie odpowiadać na ró ne zdarzenia generowane przez jej otoczenie. Dzięki temu kliknięcie przyciskiem myszki, gdy kursor znajduje się nad obszarem ekranu, zaj- mowanym przez określoną kontrolkę, mo e spowodować oczekiwaną (zaprogramowa- ną) przez u ytkownika reakcję aplikacji. Inną zaletą pakietu Tk jest wysoki stopień niezale ności kodu aplikacji od wyboru plat- formy systemowej. Czy będzie to popularny system Windows, czy nieco bardziej wyma- gający X Window System dla platformy Linux, kontrolki Tk będą funkcjonowały niemal tak samo. Występujące drobne ró nice nie powinny mieć większego wpływu na jakość tworzonego GUI. Bie ący rozdział wprowadza niezbędne pojęcia związane z programowaniem przy u y- ciu pakietu narzędziowego Tk, pokazując przy tym współdziałanie oraz zale ności po- między poszczególnymi elementami graficznego interfejsu u ytkownika. Aplikacja Tk Aplikacja Tk to wykonywany przez powłokę wish skrypt Tcl wzbogacony poleceniami pakietu narzędziowego Tk. Na skrypt Tcl-Tk składają się dwie zasadnicze części: część inicjująca graficzny interfejs u ytkownika — GUI; procedury obsługi zdarzeń.
  • 8. 104 Tcl-Tk. Programowanie Po wykonaniu poleceń inicjujących GUI, aplikacja Tk oczekuje na zdarzenia genero- wane przez jej otoczenie. Na zajście zdarzenia aplikacja mo e odpowiedzieć wykona- niem odpowiedniej procedury obsługi. Uruchomienie powłoki wish spowoduje pojawienie się głównego okna aplikacji. W sys- temie Windows dodatkowo pojawi się konsola (rysunek 1.3), okienko umo liwiające po- rozumiewanie się z programem powłoki. Główne okno aplikacji to pewien wyró nio- ny obszar ekranu, wokół którego zarządca okien utworzy „trójwymiarowe” krawędzie oraz doda pasek tytułowy wraz z kilkoma przyciskami, umo liwiającymi zmianę rozmia- rów czy te zamknięcie okna. To ostanie działanie jest równoznaczne z zakończeniem działania aplikacji. Wygląd głównego okna aplikacji jest uzale niony od rodzaju plat- formy systemowej, na której uruchomiono powłokę wish. Po uruchomieniu powłoki poleceniem YKUJ (w systemie Linux) lub YKUJGZG (w sys- temie Windows) mo na wydać kilka poleceń, tworząc prosty GUI (rysunek 6.1). DWVVQP D VGZV ]COMPKL QMKGPMQ_ EQOOCPF ]FGUVTQ[ _ D RCEM D RCFZ RCF[ Rysunek 6.1. Konsola i przycisk w głównym oknie aplikacji Powy szy przykład pokazuje hierarchiczną strukturę kontrolek aplikacji Tk. W głów- nym oknie aplikacji pojawiło się okienko wewnętrzne (przycisk), którego kliknięcie spowoduje zakończenie działania programu. Proszę zwrócić uwagę na nazwę przycisku: D. Podstawową cechą okienek wewnętrznych jest to, e nie mogą być wyświetlane poza obszarem okienka, w którym się pojawiły. Mo na to łatwo sprawdzić, zmieniając myszką rozmiar głównego okna aplikacji. Kolejnym rodzajem okienek Tk są tak zwane okienka wysokiego poziomu. Jedno z nich, utworzone poleceniem VQRNGXGN C C zostało pokazane na rysunku 6.2. Okienka wysokiego poziomu tym ró nią się od okienek wewnętrznych, e wyświetlane są niezale nie od głównego okna aplikacji. Podobnie te są traktowane przez zarządcę okien platformy systemowej. Zniszczenie głównego okna aplikacji spowoduje zniszczenie okienek wysokiego poziomu, ale nie odwrotnie. Aplikację Tk mo na uruchomić jednym z poni szych poleceń. Dla systemu Windows będzie to polecenie: YKUJGZG !PCYC2NKMW! !QRELG! !CTI CTI CTI ! Dla systemu Linux polecenie to będzie miało następującą formę: YKUJ !PCYC2NKMW! !QRELG! !CTI CTI CTI !
  • 9. Rozdział 6. ♦ Wprowadzenie do Tk 105 Rysunek 6.2. Główne okno aplikacji wraz z okienkiem wysokiego poziomu Argument PCYC2NKMW jest nazwą skryptu Tcl-Tk. Spośród kilku dostępnych opcji wspomnę o jednej: IGQOGVT[ IGQOGVTKC Opcja ta pozwala określić początkowe poło enie i rozmiar głównego okna aplikacji. Argument IGQOGVTKC powinien mieć następujący format: UGTQMQ èZY[UQMQ è±Z±[ Wszystkie wielkości podawane są w jednostkach ekranu (piksele, punkty, milimetry, centymetry, cale). Znak Z (Z) oznacza odległość lewej (prawej) krawędzi okienka od lewej (prawej) krawędzi ekranu. Podobnie [ ([) oznacza odległość górnej (dolnej) krawędzi okienka od górnej (dolnej) krawędzi ekranu. Argumenty CTI CTI stanowią listę wartości przekazywanych do aplikacji. Powło- ka wish, rozpoczynając wykonywanie skryptu, tworzy pięć zmiennych: CTIE Jest to liczba całkowita określająca ilość argumentów przekazywanych do skryptu. W przypadku ich braku wartością CTIE jest liczba 0. CTIX Jest to łańcuch znaków zawierający, oddzielone spacjami, argumenty skryptu. Je eli ich nie podano, łańcuch CTIX jest pusty. CTIX Jest to łańcuch zawierający nazwę uruchomionego skryptu. W przeciwnym razie łańcuch CTIX jest pusty. IGQOGVT[ Ten zapis oznacza, e zmiennej przypisywana jest wartość opcji IGQOGVT[. VENAKPVGTCEVKXG Ta zmienna przyjmuje wartość 1, je eli interpreter został uruchomiony w trybie interaktywnym, bez specyfikacji nazwy skryptu. W przeciwnym razie zmienna przyjmuje wartość 0.
  • 10. 106 Tcl-Tk. Programowanie Kontrolki Kontrolki Tk to okienka posiadające charakterystyczne właściwości, w tym charakte- rystyczne cechy graficzne. Kontrolki podzielone są na klasy. Nazwa klasy rozpoczy- na się od du ej litery, np. $WVVQP (przycisk) i jest zwracana przez polecenie YO ENCUU MQPVTQNMC gdzie MQPVTQNMC jest nazwą kontrolki. Na przykład po tworzeniu pola wejściowego poleceniem GPVT[ G G kolejne polecenie zwróci nazwę klasy: YO ENCUU G 'PVT[ Kontrolki nale ące do tej samej klasy charakteryzują się tym samym zestawem opcji konfiguracyjnych, dzięki którym mo liwe jest nadanie im indywidualnego wyglądu i spo- sobu działania. Na przykład ka da kontrolka wspomnianej ju klasy $WVVQP mo e wy- świetlać jeden z elementów: tekst, bitmapę lub obrazek (rysunek 6.3) i mo e w ró ny spo- sób reagować, powiedzmy na kliknięcie przyciskiem myszki. Rysunek 6.3. Indywidualne cechy wyglądu kontrolek klasy Button Lista standardowych klas kontrolek dostarczanych w pakiecie narzędziowym Tk jest wystarczająco obszerna, by móc tworzyć nawet skomplikowane GUI. W dalszych roz- działach ksią ki opisane zostaną następujące klasy kontrolek: $WVVQP (przycisk) (TCOG (ramka) %CPXCU (płótno) %JGEMDWVVQP (pole wyboru) 'PVT[ (pole wejściowe) +OCIG (element graficzny) .CDGN (etykieta) .KUVDQZ (lista wyboru) /GPW (pasek menu) /GPWDWVVQP (przycisk menu)
  • 11. Rozdział 6. ♦ Wprowadzenie do Tk 107 /GUUCIG (wiadomość) 4CFKQDWVVQP (pole opcji) 5ECNG (skala) 5ETQNNDCT (pasek przewijania) 6GZV (pole tekstowe) 6QRNGXGN (okno wysokiego poziomu) Jak ju wspomniano, okienka aplikacji Tk zorganizowane są w sposób hierarchiczny. Na szczycie znajduje się główne okno aplikacji. Jest ono rodzicem (kontenerem) dla wszystkich pozostałych kontrolek (nawet okienek wysokiego poziomu), które z kolei równie mogą być rodzicami innych okienek. Ta struktura odbija się w sposobie identy- fikacji kontrolek. Mo na mówić o ście kach nazw lub drzewiastej strukturze kontro- lek aplikacji Tk. Zapis CDE oznacza, i okienko E jest dzieckiem okienka D, którego rodzicem jest okienko C, będące bezpośrednim potomkiem głównego okna aplikacji . Ście ki nazw, chocia mogą nasuwać porównania z techniką programowania obiekto- wego (C++, Java), nie mają z nią nic wspólnego. Określają kontener dla kontrolek usy- tuowanych w hierarchii o jeden szczebel ni ej. Tworzenie i usuwanie kontrolek Polecenie o nazwie takiej samej jak nazwa klasy, ale rozpoczynające się od małej lite- ry jest nazwą polecenia tworzącego kontrolkę. Ogólna postać takiego polecenia jest następująca: MNCUC MQPVTQNMC !QRELC YCTV ! Argument MNCUC odpowiada klasie kontrolki Tk. Argument MQPVTQNMC jest ście ką na- zwy kontrolki, a argumenty QRELC i YCTV są odpowiednio przełącznikiem opcji konfi- guracyjnej i jej wartością. Przełącznik opcji (dalej opcja) jest konstrukcją składającą się z myślnika i nazwy opcji (np.: DCEMITQWPF). Polecenie zwraca nazwę kontrolki. Interesujące jest to, e ście ka nazwy utworzonej kontrolki sama staje się nazwą pole- cenia. Wynika stąd, e kontrolki posiadają własne zestawy poleceń, których postać jest następująca: MQPVTQNMC CTI !CTI ! Argument CTI, nazywany modyfikatorem, jest obowiązkowy, poniewa definiuje ope- rację wykonywaną przez lub na kontrolce MQPVTQNMC. Analogicznie do konstrukcji obiektowych mo na powiedzieć, e modyfikator określa metodę obiektu reprezentują- cego kontrolkę. Polecenie MQPVTQNMC EIGV QRELC zwraca aktualną wartość opcji QRELC kontrolki MQPVTQNMC, a polecenie
  • 12. 108 Tcl-Tk. Programowanie MQPVTQNMC EQPHKIWTG !QRELC! !YCTV QRELC YCTV ! umo liwia zmianę wartości wybranej opcji, czy te zwraca aktualną wartość jednej lub wszystkich opcji. Wypróbujmy: DWVVQP D VGZV ]-NKMPKL OPKG_ D D EIGV VGZV -NKMPKL OPKG Usunięcie jednej lub kilku kontrolek jest równie proste, jak ich tworzenie. Wystarczy wykonać polecenie FGUVTQ[ z argumentem będącym listą ście ek nazw kontrolek prze- znaczonych do usunięcia: FGUVTQ[ MQPVTQNMC !MQPVTQNMC ! Mo emy teraz usunąć przycisk z ostatniego przykładu: FGUVTQ[ D D EIGV VGZV KPXCNKF EQOOCPF PCOG D Rzeczywiście, przycisk został zniszczony, o czym świadczy reakcja powłoki wish na próbę pobrania wartości jednej z opcji konfiguracyjnych (VGZV). Zarządcy rozkładów O ostatecznych rozmiarach i poło eniach kontrolek w obszarze GUI decydują zarząd- cy rozkładu (rysunek 6.4). Ka dy z nich w charakterystyczny dla siebie sposób roz- mieszcza grupę kontrolek w ich kontenerze. Zarządca RNCEG jest najprostszy i wyma- ga jawnego określenia takich parametrów, jak: szerokość, wysokość, a tak e współrzędne lewego górnego rogu kontrolki. Kolejny zarządca, RCEM, stara się upakować kontrolki, minimalizując ich rozmiary. Jego działanie jest konsekwencją narzucenia pewnych warunków, na przykład takiego, który nakazuje umieszczenie kontrolki przy lewej krawędzi dostępnego obszaru. Ostatnim standardowym zarządcą geometrii jest ITKF, grupujący kontrolki w komórkach siatki. Rysunek 6.4. Efekt rozmieszczenia trzech przycisków przez zarządców: place, pack i grid
  • 13. Rozdział 6. ♦ Wprowadzenie do Tk 109 Wymiana informacji Aplikacja Tk wymienia dane z u ytkownikiem, innymi aplikacjami, a tak e z zarządcą okien platformy systemowej. Prawie zawsze zamierzona praca aplikacji wymaga współ- działania pomiędzy poszczególnymi jej elementami — kontrolkami. U ytkownik generuje zdarzenia, korzystając z urządzeń peryferyjnych: myszki lub klawiatury. Źródłem zdarzenia staje się ta z kontrolek aplikacji, której bezpośrednio dotyczy operacja wykonana myszką lub klawiaturą (typ zdarzenia). Z ka dym typem zdarzenia oraz jego źródłem mo na poleceniem DKPF powiązać procedurę obsługi wy- konywaną w odpowiedzi na zajście zdarzenia. Na tym właśnie polega tak zwane zda- rzeniowe oprogramowanie GUI. U ytkownik generuje zdarzenia, po czym aplikacja odpowiada wykonaniem dedykowanej procedury obsługi. O ile do zajścia zdarzenia związanego z myszką wystarcza wprowadzenie jej kursora nad obszar kontrolki (zdarzenie typu 'PVGT ), o tyle reakcja na zdarzenia klawiatury uzale niona jest od tego, która z kontrolek aplikacji posiada skupienie (focus). W da- nej chwili, w odpowiedzi na zdarzenia klawiatury, mogą być wykonywane skrypty obsługi powiązane tylko z jedną kontrolką, tą właśnie która aktualnie posiada skupie- nie. Sposób zmiany skupienia uzale niony jest od klasy kontrolki. Dla okienek z klas 'PVT[ lub 6GZV wystarczy kliknięcie nad ich obszarem lewym przyciskiem myszki, a dla kontrolek z klas $WVVQP czy %JGEMDWVVQP konieczne jest u ycie kombinacji klawiszy Tab lub Shift+Tab. Inne z kontrolek, na przykład nale ące do klasy (TCOG, mogą przyjmować skupienie tylko w wyniku wykonania polecenia HQEWU. Czasem zachodzi potrzeba ograniczenia reakcji na zachodzące zdarzenia tylko do jed- nego drzewa kontrolek. Mechanizm ten, realizowany przez polecenie ITCD, jest najczę- ściej wykorzystywany do budowy okienek dialogowych. Inny sposób interakcji u ytkownika z aplikacją polega na wykorzystaniu opcji EQOOCPF kontrolek nale ących do takich klas, jak: $WVVQP, %JGEMDWVVQP i 4CFKQDWVVQP. Opcja EQOOCPF umo liwia, bez konieczności korzystania z polecenia DKPF, zdefinio- wanie skryptu wykonywanego po kliknięciu lewego przycisku myszki nad obszarem wybranego okienka. Wymieniać informacje mogą równie dwie działające niezale ne od siebie aplikacje. Polecenie UGPF wysyła skrypt Tcl do innej aplikacji, gdzie jest wykonywany. Następnie wynik zostaje zwrócony do aplikacji wysyłającej. W ten sposób pewne zadania infor- matyczne mo na przydzielić do wykonania kilku programom. Specyficznym oddziaływaniem pomiędzy aplikacją Tk, a jej otoczeniem jest wykorzy- stanie zarządcy okien platformy systemowej do zmiany geometrii głównego okienka aplikacji oraz okienek wysokiego poziomu. Korzystając ze zbioru poleceń YO, mo na dodatkowo sprecyzować szereg innych parametrów kontrolek wysokiego poziomu. Jak wspomniano wy ej, współpraca pomiędzy samymi okienkami równie nie nale y do wyjątków. Kontrolki klas %CPXCU, 'PVT[, .KUVDQZ, 6GZV mo na łączyć z paskami przewijania (5ETQNNDCT). W tym przypadku poło enie suwaka na pasku przewijania jest odwzorowywane na widzialny obszar powiązanego z nim okienka.