background image

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63

e-mail: helion@helion.pl

PRZYK£ADOWY ROZDZIA£

PRZYK£ADOWY ROZDZIA£

IDZ DO

IDZ DO

ZAMÓW DRUKOWANY KATALOG

ZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EK

KATALOG KSI¥¯EK

TWÓJ KOSZYK

TWÓJ KOSZYK

CENNIK I INFORMACJE

CENNIK I INFORMACJE

ZAMÓW INFORMACJE

O NOWOCIACH

ZAMÓW INFORMACJE

O NOWOCIACH

ZAMÓW CENNIK

ZAMÓW CENNIK

CZYTELNIA

CZYTELNIA

FRAGMENTY KSI¥¯EK ONLINE

FRAGMENTY KSI¥¯EK ONLINE

SPIS TRECI

SPIS TRECI

DODAJ DO KOSZYKA

DODAJ DO KOSZYKA

KATALOG ONLINE

KATALOG ONLINE

TCL-TK.
Programowanie

Autor: Dariusz Chrobak
ISBN: 83-7197-969-X
Format: B5, stron: 272

Jêzyk programowania Tcl (Tool Command Language) nale¿y do licznej rodziny 
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 
innymi na uruchamiania wielu procesów (programów), korzystanie z przekierowañ 
wejcia-wyjcia, tworzenie potoków poleceñ i tworzenie gniazd sieciowych do 
komunikacji TCP/IP. Rozszerzeniem Tcl o trudnym do przecenienia znaczeniu jest pakiet 
narzêdziowy Tk. Dziêki poleceniom Tk tworzenie i manipulowanie okienkami 
sk³adaj¹cymi siê na graficzny interfejs u¿ytkownika (GUI) jest niezwykle proste. 

Jeli 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. 

Ksi¹¿ka „Tcl/Tk. Programowanie” to wyczerpuj¹cy i kompletny podrêcznik tego jêzyka 
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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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ń.

background image

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 

 (w systemie Linux) lub 

 (w sys-

temie Windows) można wydać kilka poleceń, tworząc prosty GUI (rysunek 6.1).

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:

. 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

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:

 !"#

Dla systemu Linux polecenie to będzie miało następującą formę:

 !

background image

Rozdział 6. 

♦ Wprowadzenie do Tk

105

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

Argument 

  jest  nazwą  skryptu  Tcl-Tk.  Spośród  kilku  dostępnych  opcji

wspomnę o jednej:

Opcja ta pozwala określić początkowe położenie i rozmiar głównego okna
aplikacji. Argument 

 powinien mieć następujący format:

±±

Wszystkie wielkości podawane są w jednostkach ekranu (piksele, punkty,
milimetry, centymetry, cale). Znak 

 (

) 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 

 stanowią listę wartości przekazywanych do aplikacji. Powło-

ka 

wish, rozpoczynając wykonywanie skryptu, tworzy pięć zmiennych:

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

 jest liczba 0.

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

 jest pusty.

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

 jest pusty.

Ten zapis oznacza, że zmiennej przypisywana jest wartość opcji 

.

Ta zmienna przyjmuje wartość 1, jeżeli interpreter został uruchomiony
w trybie interaktywnym, bez specyfikacji nazwy skryptu. W przeciwnym
razie zmienna przyjmuje wartość 0.

background image

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. 

 (przycisk) i jest zwracana przez polecenie

 

gdzie 

  jest  nazwą  kontrolki.  Na  przykład  po  tworzeniu  pola  wejściowego

poleceniem

kolejne polecenie zwróci nazwę klasy:

 

$

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 

  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:

  

 (przycisk)

  

 (ramka)

  

 (płótno)

  

 (pole wyboru)

  

 (pole wejściowe)

  

 (element graficzny)

  

 (etykieta)

  

 (lista wyboru)

  

 (pasek menu)

  

 (przycisk menu)

background image

Rozdział 6. 

♦ Wprowadzenie do Tk

107

  

 (wiadomość)

  

 (pole opcji)

  

 (skala)

  

 (pasek przewijania)

  

 (pole tekstowe)

  

 (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 

 oznacza, iż  okienko 

  jest  dzieckiem  okienka 

,  którego

rodzicem jest okienko 

, 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:

Argument 

  odpowiada  klasie  kontrolki  Tk.  Argument 

 jest  ścieżką  na-

zwy kontrolki, a argumenty 

 i 

 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.: 

). 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:

Argument 

, nazywany  modyfikatorem, jest obowiązkowy, ponieważ definiuje ope-

rację  wykonywaną  przez  lub  na  kontrolce 

.  Analogicznie  do  konstrukcji

obiektowych  można  powiedzieć,  że  modyfikator  określa  metodę  obiektu  reprezentują-
cego kontrolkę. Polecenie

%

zwraca aktualną wartość opcji 

 kontrolki 

, a polecenie

background image

108

Tcl-Tk. Programowanie

&%

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

Wypróbujmy:

'(

%'

(

Usunięcie jednej  lub  kilku  kontrolek  jest  równie  proste,  jak  ich  tworzenie.  Wystarczy
wykonać polecenie 

 z argumentem będącym listą ścieżek  nazw  kontrolek  prze-

znaczonych do usunięcia:

Możemy teraz usunąć przycisk z ostatniego przykładu:

%'

))

Rzeczywiście, przycisk  został zniszczony, o czym świadczy reakcja  powłoki 

wish na

próbę pobrania wartości jednej z opcji konfiguracyjnych (

).

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 

 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, 

, 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 

,

grupujący kontrolki w komórkach siatki.

Rysunek 6.4.
Efekt rozmieszczenia
trzech przycisków
przez zarządców:
place, pack i grid

background image

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 

 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 

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

 lub 

 wystarczy kliknięcie nad ich obszarem lewym przyciskiem myszki, a dla

kontrolek  z  klas 

  czy 

  konieczne  jest  użycie  kombinacji  klawiszy

Tab  lub  Shift+Tab.  Inne  z  kontrolek,  na  przykład  należące  do  klasy 

,  mogą

przyjmować skupienie tylko w wyniku wykonania polecenia 

 

.

Czasem  zachodzi potrzeba  ograniczenia reakcji  na  zachodzące  zdarzenia  tylko  do  jed-
nego drzewa kontrolek. Mechanizm ten, realizowany przez polecenie 

,  jest  najczę-

ściej wykorzystywany do budowy okienek dialogowych.

Inny  sposób  interakcji  użytkownika  z  aplikacją  polega  na  wykorzystaniu  opcji

 kontrolek należących do takich klas, jak: 

 i 

.

Opcja 

 umożliwia, bez konieczności  korzystania  z  polecenia 

,  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 

 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ń 

,  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 

  można  łączyć  z  paskami

przewijania (

). W tym przypadku położenie suwaka na pasku przewijania jest

odwzorowywane na widzialny obszar powiązanego z nim okienka.