Tcl-Tk - Hızlı Kılavuz

Tcl kısaltılmış şeklidir Tool Command Language. Berkeley, Kaliforniya Üniversitesi'nden John Ousterhout bunu tasarladı. Bir betik dili ve kendi yorumlayıcısının uygulamaya yerleştirilen bir kombinasyonudur, onunla geliştiririz.

Tcl başlangıçta Unix için geliştirildi. Daha sonra Windows, DOS, OS / 2 ve Mac OSX'e taşındı. Tcl, Bourne Shell (Sh), C Shell (csh), Korn Shell (sh) ve Perl gibi diğer unix kabuk dillerine çok benzer.

Programlara diğer programlarla etkileşim kurma ve aynı zamanda yerleştirilebilir bir tercüman olarak hareket etme yeteneği sağlamayı amaçlamaktadır. Asıl amaç, programların etkileşime girmesini sağlamak olsa da, Tcl / Tk ile yazılmış tam teşekküllü uygulamalar bulabilirsiniz.

Tcl'nin Özellikleri

Tcl'nin özellikleri aşağıdaki gibidir -

  • Azaltılmış geliştirme süresi.

  • TK entegrasyonu ile güçlü ve basit kullanıcı arayüzü kiti.

  • Bir kez yazın, her yerde çalıştırın. Windows, Mac OS X ve neredeyse her Unix platformunda çalışır.

  • Deneyimli programcılar için başlamak oldukça kolaydır; çünkü dil o kadar basit ki birkaç saat veya gün içinde Tcl öğrenebilirler.

  • Mevcut uygulamaları Tcl ile kolayca genişletebilirsiniz. Ayrıca, Tcl'yi C, C ++ veya Java'dan Tcl'ye veya tam tersine eklemek mümkündür.

  • Güçlü ağ işlevlerine sahip olun.

  • Son olarak, açık kaynak kodlu, ücretsiz ve herhangi bir sınırlama olmaksızın ticari uygulamalar için kullanılabilir.

Uygulamalar

Tcl genel amaçlı bir dildir ve Tcl'yi her yerde bulabilirsiniz. O içerir,

  • Genellikle veritabanları tarafından desteklenen ölçeklenebilir web siteleri.
  • TclHttpd ile oluşturulan yüksek performanslı web sunucuları.
  • CGI tabanlı web siteleri ile Tcl.
  • Masaüstü GUI uygulamaları.
  • Gömülü uygulamalar.

Yerel Ortam Kurulumu

Ortamınızı Tcl için kurmak istiyorsanız, bilgisayarınızda bulunan aşağıdaki iki yazılım uygulamasına ihtiyacınız vardır:

  • Metin düzeltici
  • Tcl Tercüman.

Metin düzeltici

Bu, programınızı yazmak için kullanılacaktır. Birkaç metin düzenleyicinin örnekleri arasında Windows Not Defteri, İşletim Sistemi Düzenleme komutu, Kısa, Epsilon, EMACS ve vim veya vi bulunur.

Bir metin düzenleyicinin adı ve sürümü farklı işletim sistemlerine göre değişebilir. Örneğin, Not Defteri Windows'ta kullanılacak ve vim veya vi, Linux veya UNIX'in yanı sıra Windows'ta da kullanılabilir.

Metin düzenleyicinizle oluşturduğunuz dosyalara kaynak dosyaları denir ve program kaynak kodunu içerir. Tcl programlarının kaynak dosyaları şu uzantıyla adlandırılır".tcl".

Programlamanıza başlamadan önce, bir metin düzenleyicinizin olduğundan ve bir bilgisayar programı yazmak, onu bir dosyaya kaydetmek, oluşturmak ve sonunda çalıştırmak için yeterli deneyime sahip olduğunuzdan emin olun.

The Tcl Interpreter

Bu, Tcl komutlarını yazmanıza ve bunları satır satır çalıştırmanıza olanak veren küçük bir programdır. Tam olarak çalışan bir derleyiciden farklı olarak bir hata ile karşılaşırsa, bir tcl dosyasının yürütülmesini durdurur.

Aşağıdaki gibi bir helloWorld.tcl dosyası alalım. Bunu ilk program olarak kullanacağız, seçtiğiniz bir platformda çalıştırıyoruz.

#!/usr/bin/tclsh

puts "Hello World!"

Windows üzerine kurulum

Windows yükleyici için en son sürümü, mevcut Active Tcl ikili dosyaları listesinden indirin . Aktif Tcl topluluk sürümü kişisel kullanım için ücretsizdir.

Ekrandaki talimatları izleyerek yapılabilen Tcl'yi yüklemek için indirilen yürütülebilir dosyayı çalıştırın.

Şimdi, 'cd' komutunu kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz ve ardından aşağıdaki adımları kullanarak programı çalıştırabiliriz.

C:\Tcl> tclsh helloWorld.tcl

Aşağıdaki çıktıyı görebiliriz.

C:\Tcl> helloWorld

C: \ Tcl klasördür, örneklerimi kaydetmek için kullanıyorum. Tcl programlarını kaydettiğiniz klasöre değiştirebilirsiniz.

Linux üzerine kurulum

Linux işletim sistemlerinin çoğu dahili Tcl ile birlikte gelir ve bu sistemlerde hemen başlayabilirsiniz. Mevcut değilse, Tcl-Tk'yi indirmek ve kurmak için aşağıdaki komutu kullanabilirsiniz.

$ yum install tcl tk

Şimdi, 'cd' komutunu kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz ve ardından aşağıdaki adımları kullanarak programı çalıştırabiliriz -

$ tclsh helloWorld.tcl

Aşağıdaki çıktıyı görebiliriz -

$ hello world

Debian tabanlı sistemlere kurulum

İşletim sisteminizde mevcut değilse, Tcl-Tk'yi indirmek ve yüklemek için aşağıdaki komutu kullanabilirsiniz -

$ sudo apt-get install tcl tk

Şimdi, 'cd' komutunu kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz ve ardından aşağıdaki adımları kullanarak programı çalıştırabiliriz -

$ tclsh helloWorld.tcl

Aşağıdaki çıktıyı görebiliriz -

$ hello world

Mac OS X üzerine kurulum

Mevcut Active Tcl ikili dosyaları listesinden Mac OS X paketi için en son sürümü indirin . Aktif Tcl topluluk sürümü kişisel kullanım için ücretsizdir.

Ekrandaki talimatları izleyerek yapılabilen Active Tcl'yi kurmak için indirilen yürütülebilir dosyayı çalıştırın.

Şimdi, 'cd' kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz ve ardından aşağıdaki adımları kullanarak programı çalıştırabiliriz -

$ tclsh helloWorld.tcl

Aşağıdaki çıktıyı görebiliriz -

$ hello world

Kaynak Dosyalardan Kurulum

İkili paket mevcut olmadığında kaynak dosyalardan yükleme seçeneğini kullanabilirsiniz. Genellikle Windows ve Mac OS X için Tcl ikili dosyalarının kullanılması tercih edilir, bu nedenle yalnızca unix tabanlı sistemdeki kaynakların derlenmesi aşağıda gösterilmiştir.

  • Kaynak dosyaları indirin .

  • Şimdi, indirilen klasöre geçtikten sonra ayıklamak, derlemek ve derlemek için aşağıdaki komutları kullanın.

$ tar zxf tcl8.6.1-src.tar.gz $ cd tcl8.6.1
$ cd unix $ ./configure —prefix=/opt —enable-gcc
$ make $ sudo make install

Note - Dosya adını, yukarıda verilen komut 1 ve 2'de indirdiğiniz sürümle değiştirdiğinizden emin olun.

Tcl'de bazı değişkenleri özel değişkenler olarak sınıflandırıyoruz ve önceden tanımlanmış bir kullanım / işlevselliğe sahipler. Özel değişkenlerin listesi aşağıda listelenmiştir.

Sr.No. Özel Değişken ve Açıklama
1

argc

Bir dizi komut satırı bağımsız değişkenini ifade eder.

2

argv

Komut satırı bağımsız değişkenlerini içeren listeyi ifade eder.

3

argv0

Yorumlanan dosyanın dosya adını veya komut dosyasını çağırdığımız adı ifade eder.

4

env

Çevresel değişkenler olan öğeler dizisini temsil etmek için kullanılır.

5

errorCode

Son Tcl hatası için hata kodunu sağlar.

6

errorInfo

Son Tcl hatası için yığın izlemeyi sağlar.

7

tcl_interactive

Sırasıyla 1 ve 0 olarak ayarlayarak etkileşimli ve etkileşimli olmayan modlar arasında geçiş yapmak için kullanılır.

8

tcl_library

Standart Tcl kitaplıklarının konumunu ayarlamak için kullanılır.

9

tcl_pkgPath

Paketlerin genel olarak kurulduğu dizinlerin listesini sağlar.

10

tcl_patchLevel

Tcl yorumlayıcısının mevcut yama düzeyini ifade eder.

11

tcl_platform

ByteOrder, machine, osVersion, platform ve os dahil nesnelerle öğe dizisini temsil etmek için kullanılır.

12

tcl_precision

Kesinlik, yani kayan noktalı sayıları dizelere dönüştürürken saklanacak basamak sayısını ifade eder. Varsayılan değer 12'dir.

13

tcl_prompt1

Birincil istemi ifade eder.

14

tcl_prompt2

Geçersiz komutlara sahip ikincil istemi ifade eder.

15

tcl_rcFileName

Kullanıcıya özel başlangıç ​​dosyasını sağlar.

16

tcl_traceCompile

Bayt kodu derlemesinin izlenmesini kontrol etmek için kullanılır. Çıktı yok için 0, özet için 1 ve ayrıntılı için 2 kullanın.

17

tcl_traceExec

Bayt kodu yürütmenin izlenmesini kontrol etmek için kullanılır. Çıktı yok için 0, özet için 1 ve ayrıntılı için 2 kullanın.

18

tcl_version

Tcl yorumlayıcısının geçerli sürümünü döndürür.

Yukarıdaki özel değişkenlerin Tcl yorumlayıcısı için özel anlamları vardır.

Tcl özel değişkenlerini kullanma örnekleri

Özel değişkenler için bazı örnekler görelim.

Tcl versiyonu

#!/usr/bin/tclsh

puts $tcl_version

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

8.6

Tcl Çevre Yolu

#!/usr/bin/tclsh

puts $env(PATH)

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

/home/cg/root/GNUstep/Tools:/usr/GNUstep/Local/Tools:/usr/GNUstep/
System/Tools:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/webmaster/.local/bin:/
home/webmaster/bin:/usr/local/scriba/bin:/usr/local/smlnj/
bin:/usr/local/bin/std:/usr/local/bin/extra:/usr/local/fantom/bin:/usr/
local/dart/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin:/opt/mono/
bin:/opt/mono/lib/mono/4.5:/usr/local/bin:.:/usr/libexec/sdcc:/usr/local/
icon-v950/bin:/usr/local/mozart/bin:/opt/Pawn/bin:/opt/jdk1.7.0_75/bin:/
opt/jdk1.7.0_75/jre/bin:/opt/pash/Source/PashConsole/bin/Debug/

Tcl Paket Yolu

#!/usr/bin/tclsh

puts $tcl_pkgPath

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

/usr/lib64/tcl8.6 /usr/share/tcl8.6 /usr/lib64/tk8.6 /usr/share/tk8.6

Tcl Kütüphanesi

#!/usr/bin/tclsh

puts $tcl_library

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

/usr/share/tcl8.6

Tcl Yama Seviyesi

#!/usr/bin/tclsh

puts $tcl_patchLevel

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

8.6.6

Tcl Hassasiyeti

#!/usr/bin/tclsh

puts $tcl_precision

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

0

Tcl Başlangıç ​​Dosyası

#!/usr/bin/tclsh

puts $tcl_rcFileName

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız -

~/.tclshrc

Tcl'yi öğrenmek oldukça basit ve hadi ilk Tcl programımızı oluşturmaya başlayalım!

İlk Tcl Programı

Basit bir Tcl programı yazalım. Tüm Tcl dosyalarının bir uzantısı, yani .tcl olacaktır. Bu nedenle, aşağıdaki kaynak kodunu bir test.tcl dosyasına koyun.

#!/usr/bin/tclsh

puts "Hello, World!"

Tcl ortamının doğru kurulduğunu varsayarak; programı dosyanın dizinine geçtikten sonra çalıştıralım ve ardından programı -

$ tclsh test.tcl

Aşağıdaki çıktıyı alacağız -

Hello, World!

Şimdi Tcl programının temel yapısını görelim, böylece Tcl dilinin temel yapı taşlarını anlamanız kolaylaşacaktır. Tcl'de, önceki kod satırını sonlandırmak için yeni satır veya noktalı virgül kullanırız. Ancak her komut için yeni satır kullanıyorsanız, noktalı virgül gerekli değildir.

Yorumlar

Yorumlar, Tcl programınızdaki yardım metni gibidir ve yorumlayıcı bunları görmezden gelir. Yorumlar, başlangıçta hash _ (#) işareti kullanılarak yazılabilir.

#!/usr/bin/tclsh

# my first program in Tcl
puts "Hello World!"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello World!

Çok satırlı veya blok açıklaması, '0' koşuluyla 'if' kullanılarak yazılır. Aşağıda bir örnek gösterilmiştir.

#!/usr/bin/tclsh

if 0 {
   my first program in Tcl program
   Its very simple
}
puts "Hello World!"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello World!

Satır içi yorumlarda; # kullanılır. Aşağıda bir örnek verilmiştir.

#!/usr/bin/tclsh

puts "Hello World!" ;# my first print in Tcl program

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello World!

Tanımlayıcılar

Bir Tcl tanımlayıcısı, bir değişkeni, işlevi veya diğer herhangi bir kullanıcı tanımlı öğeyi tanımlamak için kullanılan bir addır. Tanımlayıcı, A'dan Z'ye veya a'dan z'ye bir harfle veya alt çizgiyle (_) başlar ve ardından sıfır veya daha fazla harf, alt çizgi, dolar ($) ve rakam (0'dan 9'a) gelir.

Tcl, tanımlayıcılar içinde @ ve% gibi noktalama karakterlerine izin vermez. Tcl bircase sensitive_ dil. Dolayısıyla İnsan gücü ve insan gücü , Tcl'de iki farklı tanımlayıcıdır. Aşağıda, kabul edilebilir tanımlayıcıların bazı örnekleri verilmiştir -

mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

Ayrılmış kelimeler

Aşağıdaki liste, Tcl'deki ayrılmış sözcüklerden birkaçını göstermektedir. Bu ayrılmış sözcükler, sabit ya da değişken ya da başka herhangi bir tanımlayıcı isim olarak kullanılamaz.

sonra eklemek dizi auto_execok
auto_import auto_load auto_load_index auto_qualify
ikili Bgerror kırmak tutmak
CD Saat kapat concat
devam et Dde varsayılan Başka
Aksi takdirde Kodlama eof hata
değerlendirme Yürütme çıkış ifade
fblocked Fconfigure fcopy dosya
fileevent Flush için her biri için
biçim Alır küre küresel
Tarih Eğer bilgi interp
katılmak Lappend lindex Linsert
liste Uzunluk yük lrange
Değiştir Arama Sırala ad alanı
açık Paket pid pkg_mkIndex
proc Koyar pwd okumak
regexp Regsub Adını değiştirmek kaynak
dönüş Tarama aramak Ayarlamak
priz Kaynak Bölünmüş dizi
alt Değiştirmek tclLog söylemek
zaman İzleme Bilinmeyen ayarlanmadı
Güncelleme Üst düzey Upvar değişken
vwait Süre

Tcl'de boşluk

Yalnızca beyaz boşluk içeren, muhtemelen bir yorum içeren bir satır, blank lineve bir Tcl yorumlayıcısı bunu tamamen yok sayar.

Boşluk, Tcl'de boşlukları, sekmeleri, yeni satır karakterlerini ve yorumları tanımlamak için kullanılan terimdir. Boşluk, bir ifadenin bir bölümünü diğerinden ayırır ve yorumlayıcının, bir ifadedeki koyma, bitme ve sonraki öğenin nerede başladığını belirlemesini sağlar. Bu nedenle, aşağıdaki ifadede -

#!/usr/bin/tclsh

puts "Hello World!"

"Koyar" ve "Merhaba Dünya!" Arasında en az bir boşluk karakteri (genellikle boşluk) olmalıdır. tercümanın onları ayırt edebilmesi için. Öte yandan, aşağıdaki açıklamada -

#!/usr/bin/tclsh

puts [expr 3 + 2] ;# print sum of the 3 and 2

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

5

3 ile + arasında veya + ile 2 arasında boşluk karakteri gerekmez; yine de, okunabilirlik amacıyla isterseniz bazılarını dahil etmekte özgürsünüz.

Bildiğiniz gibi, Tcl bir Araç komut dilidir, komutlar dilin en hayati parçasıdır. Tcl komutları, her biri kendi önceden tanımlanmış işlevine sahip olan dilde yerleşiktir. Bu komutlar, dilin ayrılmış sözcüklerini oluşturur ve diğer değişken adlandırma için kullanılamaz. Bu Tcl komutlarının avantajı, orijinal yerleşik işlevselliği değiştirmek için bu komutlardan herhangi biri için kendi uygulamanızı tanımlayabilmenizdir.

Tcl komutlarının her biri girişi doğrular ve yorumlayıcının çalışmasını azaltır.

Tcl komutu aslında bir kelime listesidir ve ilk kelime çalıştırılacak komutu temsil eder. Sonraki kelimeler argümanları temsil eder. Kelimeleri tek bir bağımsız değişken olarak gruplandırmak için, birden çok kelimeyi "" veya {} arasına alıyoruz.

Tcl komutunun sözdizimi aşağıdaki gibidir -

commandName argument1 argument2 ... argumentN

Tcl komutunun basit bir örneğini görelim -

#!/usr/bin/tclsh

puts "Hello, world!"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello, world!

Yukarıdaki kodda, 'koyar' Tcl komutu ve "Merhaba Dünya" bağımsız değişken1'dir. Daha önce de belirtildiği gibi, iki kelimeyi gruplamak için "" kullandık.

İki argüman içeren başka bir Tcl komutu örneği görelim -

#!/usr/bin/tclsh

puts stdout "Hello, world!"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello, world!

Yukarıdaki kodda, 'puts' Tcl komutu, 'stdout' bağımsız değişken1 ve "Merhaba Dünya" bağımsız değişken2'dir. Burada stdout, programın standart çıktı aygıtında yazdırmasını sağlar.

Komut Değiştirme

Komut değişimlerinde, köşeli parantezler içindeki komut dosyalarını değerlendirmek için köşeli parantezler kullanılır. İki sayı eklemenin basit bir örneği aşağıda gösterilmiştir -

#!/usr/bin/tclsh

puts [expr 1 + 6 + 9]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

16

Değişken Değiştirme

Değişken ikamelerinde, değişken adından önce $ kullanılır ve bu, değişkenin içeriğini döndürür. Bir değişkene değer atamak ve yazdırmak için basit bir örnek aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set a 3
puts $a

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

3

Ters Eğik Çizgi Değiştirme

Bunlar genellikle escape sequences; her ters eğik çizgi, ardından kendi anlamı olan bir harf. Satırsonu ikamesi için basit bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

puts "Hello\nWorld"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello
World

Tcl'nin ilkel veri türü dizedir ve genellikle Tcl üzerindeki tırnakları yalnızca dizgi dili olarak bulabiliriz. Bu ilkel veri türleri sırayla liste ve ilişkilendirilebilir dizi için bileşik veri türleri oluşturur. Tcl'de veri türleri yalnızca basit Tcl nesnelerini değil, aynı zamanda tutamaçlar, grafik nesneleri (çoğunlukla gereçler) ve G / Ç kanalları gibi karmaşık nesneleri de temsil edebilir. Yukarıdakilerin her biri hakkındaki ayrıntılara bakalım.

Basit Tcl Nesneleri

Tcl'de, bir tamsayı, boole, kayan nokta sayısı veya bir dize olup olmadığı. Bir değişken kullanmak istediğinizde, ona doğrudan bir değer atayabilirsiniz, Tcl'de bildirim adımı yoktur. Bu farklı türdeki nesneler için dahili temsiller olabilir. Gerektiğinde bir veri türünü diğerine dönüştürebilir. Değişkene değer atamak için sözdizimi aşağıdaki gibidir -

#!/usr/bin/tclsh

set myVariable 18
puts $myVariable

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

18

Yukarıdaki ifade, myVariable adlı bir değişken oluşturacak ve çift tırnak kullanmamış olsak da bunu bir dizge olarak saklar. Şimdi, değişken üzerinde bir aritmetik yapmaya çalışırsak, otomatik olarak bir tam sayıya çevrilir. Aşağıda basit bir örnek gösterilmektedir -

#!/usr/bin/tclsh

set myVariable 18
puts [expr $myVariable + 6 + 9]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

33

Unutulmaması gereken önemli bir nokta, bu değişkenlerin herhangi bir varsayılan değere sahip olmaması ve kullanılmadan önce bir değer atanması gerektiğidir.

Puts kullanarak yazdırmaya çalışırsak, sayı uygun dizgeye dönüştürülür. İç ve dış olmak üzere iki temsile sahip olması, Tcl'nin diğer dillere kıyasla kolayca karmaşık veri yapıları oluşturmasına yardımcı olur. Ayrıca, dinamik nesne yapısı nedeniyle Tcl daha verimlidir.

Dize Gösterimleri

Diğer dillerden farklı olarak, Tcl'de, yalnızca tek bir kelime olduğunda çift tırnak eklemenize gerek yoktur. Bir örnek olabilir -

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

hello

Birden çok dizeyi temsil etmek istediğimizde, çift tırnak işareti veya küme parantezi kullanabiliriz. Aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

hello world
hello world

Liste

Liste, bir grup unsurdan başka bir şey değildir. Basit bir listeyi temsil etmek için çift tırnak veya süslü parantez kullanan bir grup kelime kullanılabilir. Aşağıda basit bir liste gösterilmektedir -

#!/usr/bin/tclsh

set myVariable {red green blue}
puts [lindex $myVariable 2] set myVariable "red green blue" puts [lindex $myVariable 1]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

blue
green

İlişkilendirilebilir Dizi

İlişkilendirilebilir dizilerin bir tamsayı olması gerekmeyen bir indeksi (anahtarı) vardır. Genellikle anahtar değer çiftleri gibi davranan bir dizedir. Aşağıda basit bir örnek gösterilmektedir -

#!/usr/bin/tclsh

set  marks(english) 80
puts $marks(english) set marks(mathematics) 90 puts $marks(mathematics)

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

80
90

Kulplar

Tcl tutamaçları genellikle dosyaları ve grafik nesnelerini temsil etmek için kullanılır. Bunlar, ağ isteklerine yönelik işlemleri ve ayrıca seri bağlantı noktası iletişimi, soketler veya G / Ç cihazları gibi diğer kanalları içerebilir. Aşağıda bir dosya tutamacının oluşturulduğu bir örnek verilmiştir.

set myfile [open "filename" r]

Tcl dosyası G / Ç bölümünde dosyalar hakkında daha fazla ayrıntı göreceksiniz .

Tcl'de değişken bildirimi kavramı yoktur. Yeni bir değişken adı ile karşılaşıldığında, Tcl yeni bir değişken tanımlayacaktır.

Değişken Adlandırma

Değişkenlerin adı herhangi bir karakter ve uzunluk içerebilir. Değişkeni küme parantezi içine alarak beyaz boşluklara bile sahip olabilirsiniz, ancak bu tercih edilmez.

Set komutu, bir değişkene değer atamak için kullanılır. Set komutunun sözdizimi,

set variableName value

Aşağıda birkaç değişken örneği gösterilmektedir -

#!/usr/bin/tclsh

set variableA 10
set {variable B} test
puts $variableA puts ${variable B}

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

10
test

Yukarıdaki programda görebileceğiniz gibi, değişkenin değerini almak için $ variableName kullanılır.

Dinamik Yazma

Tcl, dinamik olarak yazılmış bir dildir. Değişkenin değeri, gerektiğinde dinamik olarak istenen türe dönüştürülebilir. Örneğin, dizge olarak saklanan bir 5 sayısı, aritmetik bir işlem yapılırken sayıya dönüştürülecektir. Aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set variableA "10"
puts $variableA
set sum [expr $variableA +20]; puts $sum

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

10
30

Matematiksel İfadeler

Yukarıdaki örnekte görebileceğiniz gibi, ifade matematiksel ifadeyi temsil etmek için kullanılır. Tcl'nin varsayılan duyarlığı 12 hanedir. Kayan nokta sonuçları elde etmek için en az bir ondalık basamak eklemeliyiz. Basit bir örnek yukarıdakileri açıklıyor.

#!/usr/bin/tclsh

set variableA "10"
set result [expr $variableA / 9]; puts $result
set result [expr $variableA / 9.0]; puts $result
set variableA "10.0"
set result [expr $variableA / 9]; puts $result

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

1
1.1111111111111112
1.1111111111111112

Yukarıdaki örnekte, üç durum görebilirsiniz. İlk durumda, temettü ve bölen tam sayılardır ve sonuç olarak bir tam sayı elde ederiz. İkinci durumda, tek başına bölen bir ondalık sayıdır ve üçüncü durumda, bölünen bir ondalık sayıdır. Hem ikinci hem de üçüncü durumlarda, sonuç olarak bir ondalık sayı elde ederiz.

Yukarıdaki kodda, tcl_precision özel değişkenini kullanarak hassasiyeti değiştirebilirsiniz. Aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set variableA "10"
set tcl_precision 5
set result [expr $variableA / 9.0]; puts $result

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

1.1111

Operatör, derleyiciye belirli matematiksel veya mantıksal işlemleri gerçekleştirmesini söyleyen bir semboldür. Tcl dili yerleşik operatörler açısından zengindir ve aşağıdaki operatör türlerini sağlar -

  • Aritmetik operatörler
  • İlişkisel Operatörler
  • Mantıksal operatörler
  • Bitsel Operatörler
  • Üçlü operatör

Bu bölüm aritmetik, ilişkisel, mantıksal, bitsel ve üçlü operatörleri tek tek açıklayacaktır.

Aritmetik operatörler

Aşağıdaki tablo, Tcl dili tarafından desteklenen tüm aritmetik operatörleri göstermektedir. 'A' değişkeninin 10 ve 'B' değişkeninin 20 olduğunu varsayalım, o zaman -

Örnekleri Göster

Şebeke Açıklama Misal
+ İki işlenen ekler A + B 30 verecek
- İlk işlenenden ikinci işleneni çıkarır A - B -10 verir
* Her iki işleneni de çarpar A * B 200 verecek
/ Payı, pay azaltıcıya böler B / A 2 verecek
% Modül İşleci ve bir tamsayı bölmesinden sonra kalanı B% A 0 verir

İlişkisel Operatörler

Aşağıdaki tablo, Tcl dili tarafından desteklenen tüm ilişkisel operatörleri göstermektedir. Değişken varsayA 10 ve değişken tutar B 20 tutar, sonra -

Örnekleri Göster

Şebeke Açıklama Misal
== İki işlenenin değerlerinin eşit olup olmadığını kontrol eder, evet ise koşul doğru olur. (A == B) doğru değil.
! = İki işlenenin değerlerinin eşit olup olmadığını kontrol eder, değerler eşit değilse koşul doğru olur. (A! = B) doğrudur.
> Soldaki işlenenin değerinin sağ işlenenin değerinden büyük olup olmadığını kontrol eder, evet ise koşul doğru olur. (A> B) doğru değil.
< Soldaki işlenenin değerinin sağ işlenenin değerinden küçük olup olmadığını kontrol eder, evet ise koşul doğru olur. (A <B) doğrudur.
> = Sol işlenenin değerinin sağ işlenenin değerinden büyük veya ona eşit olup olmadığını kontrol eder, evet ise koşul doğru olur. (A> = B) doğru değil.
<= Sol işlenenin değerinin sağ işlenenin değerinden küçük veya ona eşit olup olmadığını kontrol eder, evet ise koşul doğru olur. (A <= B) doğrudur.

Mantıksal operatörler

Aşağıdaki tablo, Tcl dili tarafından desteklenen tüm mantıksal işleçleri göstermektedir. Değişken varsayA 1 ve değişken tutar B 0 tutar, sonra -

Örnekleri Göster

Şebeke Açıklama Misal
&& Mantıksal AND operatörü çağrıldı. Her iki işlenen de sıfır değilse, koşul doğru olur. (A && B) yanlıştır.
|| Mantıksal VEYA Operatörü çağrıldı. İki işlenenden herhangi biri sıfır değilse, koşul doğru olur. (A || B) doğrudur.
! Mantıksal NOT Operatörü olarak adlandırıldı. İşleneninin mantıksal durumunu tersine çevirmek için kullanın. Bir koşul doğruysa, Mantıksal NOT operatörü yanlış yapar. ! (A && B) doğrudur.

Bitsel Operatörler

Bitsel operatör bitler üzerinde çalışır ve bit bit işlem gerçekleştirir. &, | Ve ^ için doğruluk tabloları aşağıdaki gibidir -

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

A = 60 ise; ve B = 13; şimdi ikili biçimde aşağıdaki gibi olacaklar -

Bir = 0011 1100

B = 0000 1101

----------------------

A&B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001

Tcl dili tarafından desteklenen Bitwise operatörleri aşağıdaki tabloda listelenmiştir. Değişken varsayA 60 ve değişken tutar B 13 tutar, sonra -

Örnekleri Göster

Şebeke Açıklama Misal
& İkili VE İşleci, her iki işlenende de varsa sonuca bir bit kopyalar. (A & B) 0000 1100 olan 12 verecek
| İkili VEYA İşleci, işlenenlerden herhangi birinde varsa bir bit kopyalar. (A | B), 0011 1101 olan 61 verecek
^ İkili XOR İşleci, bir işlenen içinde ayarlanmışsa, ancak her ikisinde birden değil ise biti kopyalar. (A ^ B), 0011 0001 olan 49 verecek
<< İkili Sol Kaydırma Operatörü. Soldaki işlenenler değeri, sağ işlenen tarafından belirtilen bit sayısı kadar sola taşınır. Bir << 2 240 verir, yani 1111 0000
>> İkili Sağ Shift Operatörü. Soldaki işlenenler değeri, sağ işlenen tarafından belirtilen bit sayısı kadar sağa taşınır. A >> 2, 0000 1111 olan 15 verir

Üçlü operatör

Örnekleri Göster

Şebeke Açıklama Misal
? : Üçlü Koşul doğruysa? Ardından X değeri: Aksi takdirde Y değeri

Tcl'de Operatör Önceliği

Operatör önceliği, bir ifadedeki terimlerin gruplandırılmasını belirler. Bu, bir ifadenin nasıl değerlendirileceğini etkiler. Bazı operatörler diğerlerinden daha yüksek önceliğe sahiptir; örneğin, çarpma operatörü toplama operatöründen daha yüksek önceliğe sahiptir.

For example: x = 7 + 3 * 2; burada, x operatörü + 'dan daha yüksek önceliğe sahip olduğu için 20 değil, 13 olarak atanır, bu nedenle önce 3 * 2 ile çarpılır ve sonra 7'ye eklenir.

Burada, en yüksek önceliğe sahip operatörler tablonun en üstünde, en düşük olanlar ise en altta görünür. Bir ifade içinde, daha yüksek öncelikli operatörler ilk olarak değerlendirilecektir.

Örnekleri Göster

Kategori Şebeke İlişkisellik
Tekli + - Sağdan sola
Çarpımsal * /% Soldan sağa
Katkı + - Soldan sağa
Vardiya << >> Soldan sağa
İlişkisel <<=>> = Soldan sağa
Bitsel AND & Soldan sağa
Bitsel ÖZELVEYA ^ Soldan sağa
Bit tabanlı VEYA | Soldan sağa
Mantıksal AND && Soldan sağa
Mantıksal VEYA || Soldan sağa
Üçlü ?: Sağdan sola

Karar verme yapıları, programcının, program tarafından değerlendirilecek veya test edilecek bir veya daha fazla koşulu, koşulun doğru olduğu belirlenirse yürütülecek bir ifade veya ifadeyle birlikte belirtmesini ve isteğe bağlı olarak, koşulun doğru olması durumunda yürütülecek diğer ifadeleri gerektirir. yanlış olduğu belirlenir.

Aşağıda, programlama dillerinin çoğunda bulunan tipik bir karar verme yapısının genel biçimi verilmiştir -

Tcl dili expr komutunu dahili olarak kullanır ve bu nedenle expr ifadesini açıkça kullanmamıza gerek yoktur.

Tcl dili, aşağıdaki türden karar verme beyanları sağlar -

Sr.No. Açıklama ve Açıklama
1 eğer ifadesi

Bir 'if' ifadesi, bir veya daha fazla ifadenin izlediği bir Boole ifadesinden oluşur.

2 if ... else ifadesi

Bir 'if' ifadesinin ardından, Boolean ifadesi yanlış olduğunda yürütülen isteğe bağlı bir 'else' ifadesi gelebilir.

3 yuvalanmış if ifadeleri

Bir 'if' veya 'else if' ifadesini başka bir 'if' veya 'else if' ifadesini / ifadelerini kullanabilirsiniz.

4 anahtar deyimi

Bir switch ifadesi, bir değişkenin bir değerler listesine karşı eşitlik açısından test edilmesine izin verir.

5 yuvalanmış anahtar ifadeleri

Birini kullanabilirsin switch bir başkasının içinde ifade switch beyan (lar).

? : Şebeke

Biz kapladık conditional operator ? : önceki bölümde, değiştirmek için kullanılabilir if...elseifadeler. Aşağıdaki genel biçime sahiptir -

Exp1 ? Exp2 : Exp3;

Burada Exp1, Exp2 ve Exp3 ifadelerdir. Kolonun kullanımına ve yerleştirilmesine dikkat edin.

A 'değeri? ifadesi şu şekilde belirlenir: İfade1 değerlendirilir. Doğruysa, Exp2 değerlendirilir ve tümün değeri olur '? ifade. ' Exp1 yanlışsa, Exp3 değerlendirilir ve değeri ifadenin değeri olur. Aşağıda bir örnek gösterilmiştir.

#!/usr/bin/tclsh

set a 10;
set b [expr $a == 1 ? 20: 30] puts "Value of b is $b\n"
set b [expr $a == 10 ? 20: 30] puts "Value of b is $b\n"

Yukarıdaki programı derleyip yürüttüğünüzde, aşağıdaki sonucu verir -

Value of b is 30
Value of b is 20

Bir kod bloğunu birkaç kez çalıştırmanız gereken bir durum olabilir. Genel olarak, ifadeler sıralı olarak yürütülür: Bir fonksiyondaki ilk ifade önce çalıştırılır, ardından ikincisi vb.

Programlama dilleri, daha karmaşık yürütme yollarına izin veren çeşitli kontrol yapıları sağlar.

Bir döngü deyimi, bir deyimi veya deyim grubunu birden çok kez yürütmemize olanak tanır ve aşağıdaki programlama dillerinin çoğunda bir döngü deyiminin genel biçimidir -

Tcl dili, döngü gereksinimlerini karşılamak için aşağıdaki döngü türlerini sağlar.

Sr.No. Döngü Tipi ve Açıklaması
1 döngü sırasında

Belirli bir koşul doğruyken bir ifadeyi veya ifade grubunu tekrarlar. Döngü gövdesini çalıştırmadan önce koşulu test eder.

2 döngü için

Bir dizi ifadeyi birden çok kez yürütür ve döngü değişkenini yöneten kodu kısaltır.

3 İç içe geçmiş döngüler

Döngü while, for veya do.. while döngüsü içinde bir veya daha fazla döngü kullanabilirsiniz.

Döngü Kontrol İfadeleri

Döngü kontrol ifadeleri, yürütmeyi normal sırasından değiştirir. Yürütme bir kapsam bıraktığında, bu kapsamda oluşturulan tüm otomatik nesneler yok edilir.

Tcl, aşağıdaki kontrol ifadelerini destekler.

Sr.No. Kontrol İfadesi ve Açıklama
1 break ifadesi

Döngü veya anahtar deyimini sonlandırır ve yürütmeyi döngü veya anahtardan hemen sonra ifadeye aktarır.

2 devam ifadesi

Döngünün vücudunun geri kalanını atlamasına ve yinelemeden önce durumunu hemen yeniden test etmesine neden olur.

Sonsuz Döngü

Bir koşul asla yanlış olmazsa döngü sonsuz döngü haline gelir. whiledöngü geleneksel olarak bu amaç için kullanılır. Koşullu ifadeyi 1 olarak bırakarak sonsuz bir döngü oluşturabilirsiniz.

while {1} {
   puts "This loop will run forever."
}

Koşullu ifade olmadığında, doğru olduğu varsayılır. Tcl programcıları daha çok while {1} yapısını sonsuz bir döngüyü belirtmek için kullanırlar.

NOTE - Ctrl + C tuşlarına basarak sonsuz bir döngüyü sonlandırabilirsiniz.

Bir dizi, indeksler kullanan bir grup elemanın sistematik bir düzenlemesidir. Geleneksel dizi için sözdizimi aşağıda gösterilmiştir.

set ArrayName(Index) value

Basit dizi oluşturmanın bir örneği aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts $languages(0) puts $languages(1)

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Tcl
C Language

Dizi Boyutu

Boyut dizisini hesaplamak için sözdizimi aşağıda gösterilmiştir.

[array size variablename]

Boyutu yazdırmak için bir örnek aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
puts  [array size languages]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

2

Dizi Yinelemesi

Bununla birlikte, dizi dizinleri, dizin 1 için belirtilen değerler gibi sürekli olmayan değerler olabilir, ardından dizin 10 vb. Ancak, sürekli olmaları durumunda, dizinin öğelerine erişmek için dizi yinelemesini kullanabiliriz. Dizinin elemanlarını yazdırmak için basit bir dizi yinelemesi aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set languages(0) Tcl
set languages(1) "C Language"
for { set index 0 }  { $index < [array size languages] } { incr index } { puts "languages($index) : $languages($index)"
}

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

languages(0) : Tcl
languages(1) : C Language

İlişkisel Diziler

Tcl'de, doğaları gereği tüm diziler ilişkilendirilebilir. Diziler belirli bir sıra olmadan saklanır ve alınır. İlişkilendirilebilir dizilerin bir sayı olması gerekmeyen bir dizini vardır ve seyrek olarak doldurulabilir. Sayı olmayan indislere sahip ilişkilendirilebilir dizi için basit bir örnek aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts  $personA(Name) puts $personA(Age)

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Dave
14

Dizi Dizinleri

Dizi indislerini almak için sözdizimi aşağıda gösterilmiştir.

[array names variablename]

Boyutu yazdırmak için bir örnek aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
puts [array names personA]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Age Name

İlişkisel Dizinin Yinelemesi

İlişkilendirilebilir dizi boyunca yineleme yapmak için dizinin indislerini kullanabilirsiniz. Aşağıda bir örnek gösterilmiştir.

#!/usr/bin/tclsh

set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
   puts "personA($index): $personA($index)"
}

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

personA(Age): 14
personA(Name): Dave

Tcl'nin ilkel veri türü dizedir ve genellikle Tcl üzerindeki tırnakları yalnızca dizgi dili olarak bulabiliriz. Bu dizeler alfasayısal karakter, yalnızca sayılar, Boole ve hatta ikili veriler içerebilir. Tcl, 16 bit unicode karakterler kullanır ve alfanümerik karakterler Latin olmayan karakterler, sayılar veya noktalama işaretleri dahil olmak üzere harfler içerebilir.

Boole değeri, doğru için 1, evet veya doğru ve yanlış için 0, hayır veya yanlış olarak temsil edilebilir.

Dize Gösterimleri

Diğer dillerden farklı olarak, Tcl'de, yalnızca tek bir kelime olduğunda çift tırnak eklemenize gerek yoktur. Bir örnek olabilir -

#!/usr/bin/tclsh

set myVariable hello
puts $myVariable

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

hello

Birden çok dizeyi temsil etmek istediğimizde, çift tırnak işareti veya küme parantezi kullanabiliriz. Aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set myVariable "hello world"
puts $myVariable set myVariable {hello world} puts $myVariable

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

hello world
hello world

String Escape Sequence

Bir karakter değişmezi düz bir karakter (ör. "X"), bir kaçış dizisi (ör. "\ T") veya evrensel bir karakter (ör. "\ U02C0") olabilir.

Tcl'de bir ters eğik çizgiden önce geldiklerinde özel anlamlara sahip olacakları ve satırsonu (\ n) veya sekme (\ t) gibi temsil etmek için kullanılan belirli karakterler vardır. Burada, bu tür kaçış dizisi kodlarının bir listesi var -

Kaçış dizisi Anlam
\\ \ karakteri
\ ' karakter
\ " "karakteri
\? ? karakter
\ a Uyarı veya zil
\ b Geri tuşu
\ f Form besleme
\ n Yeni hat
\ r Satırbaşı
\ t Yatay sekme
\ v Dikey sekme

Aşağıda, birkaç kaçış dizisi karakterini gösteren örnek verilmiştir -

#!/usr/bin/tclsh

puts "Hello\tWorld\n\nTutorialspoint";

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Hello   World

Tutorialspoint

Dize Komutu

Dize komutu için alt komutların listesi aşağıdaki tabloda listelenmiştir -

Sr.No. Yöntemler ve Açıklama
1

compare string1 string2

Dize1 ve dize2'yi sözlüksel olarak karşılaştırır. Eşitse 0, dizge1 dizge2'den önce gelirse -1, değilse 1 döndürür.

2

first string1 string2

String1'in string2'deki ilk oluşum dizinini döndürür. Bulunmazsa -1 döndürür.

3

index dize indeksi

Dizindeki karakteri döndürür.

4

last string1 string2

Dize2'de dize1'in son oluşum dizinini döndürür. Bulunmazsa -1 döndürür.

5

length dizi

Dizenin uzunluğunu döndürür.

6

match pattern dizi

Dize kalıpla eşleşirse 1 döndürür.

7

range dize dizin1 dizin2

Dizideki karakter aralığını dizin1'den dizin2'ye döndürür.

8

tolower dizi

Küçük harfli dizeyi döndürür.

9

toupper dizi

Büyük harf dizesini döndürür.

10

trim string? trimcharacters?

Dizenin her iki ucundaki kırpma karakterlerini kaldırır. Varsayılan kırpma karakterleri beyaz boşluktur.

11

trimleft string? trimcharacters?

Removes trimcharacters in left beginning of string. The default trimcharacters is whitespace.

12

trimright string ?trimcharacters?

Removes trimcharacters in left end of string. The default trimcharacters is whitespace.

13

wordend findstring index

Return the index in findstring of the character after the word containing the character at index.

14

wordstart findstring index

Return the index in findstring of the first character in the word containing the character at index.

Examples of some commonly used Tcl string sub commands are given below.

String Comparison

#!/usr/bin/tclsh

set s1 "Hello"
set s2 "World"
set s3 "World"
puts [string compare $s1 $s2]
if {[string compare $s2 $s3] == 0} {
   puts "String \'s1\' and \'s2\' are same.";
}

if {[string compare $s1 $s2] == -1} {
   puts "String \'s1\' comes before \'s2\'.";
}

if {[string compare $s2 $s1] == 1} {
   puts "String \'s2\' comes after \'s1\'.";
}

When the above code is compiled and executed, it produces the following result −

-1
String 's1' and 's2' are same.
String 's1' comes before 's2'.
String 's2' comes after 's1'.

Index of String

#!/usr/bin/tclsh

set s1 "Hello World"
set s2 "o"
puts "First occurrence of $s2 in s1" puts [string first $s2 $s1] puts "Character at index 0 in s1" puts [string index $s1 0]
puts "Last occurrence of $s2 in s1" puts [string last $s2 $s1] puts "Word end index in s1" puts [string wordend $s1 20]
puts "Word start index in s1"
puts [string wordstart $s1 20]

When the above code is compiled and executed, it produces the following result −

First occurrence of o in s1
4
Character at index 0 in s1
H
Last occurrence of o in s1
7
Word end index in s1
11
Word start index in s1
6

Length of String

#!/usr/bin/tclsh

set s1 "Hello World"
puts "Length of string s1"
puts [string length $s1]

When the above code is compiled and executed, it produces the following result −

Length of string s1
11

Handling Cases

#!/usr/bin/tclsh

set s1 "Hello World"
puts "Uppercase string of s1"
puts [string toupper $s1] puts "Lowercase string of s1" puts [string tolower $s1]

When the above code is compiled and executed, it produces the following result −

Uppercase string of s1
HELLO WORLD
Lowercase string of s1
hello world

Trimming Characters

#!/usr/bin/tclsh

set s1 "Hello World"
set s2 "World"
puts "Trim right $s2 in $s1"
puts [string trimright $s1 $s2]

set s2 "Hello"
puts "Trim left $s2 in $s1"
puts [string trimleft $s1 $s2]

set s1 " Hello World "
set s2 " "
puts "Trim characters s1 on both sides of s2"
puts [string trim $s1 $s2]

When the above code is compiled and executed, it produces the following result −

Trim right World in Hello World
Hello 
Trim left Hello in Hello World
 World
Trim characters s1 on both sides of s2
Hello World

Matching Strings

#!/usr/bin/tclsh

set s1 "[email protected]" 
set s2 "*@*.com"
puts "Matching pattern s2 in s1"
puts [string match "*@*.com" $s1 ] puts "Matching pattern tcl in s1" puts [string match {tcl} $s1]

When the above code is compiled and executed, it produces the following result −

Matching pattern s2 in s1
1
Matching pattern tcl in s1
0

Append Command

#!/usr/bin/tclsh

set s1 "Hello" 
append s1 " World"
puts $s1

When the above code is compiled and executed, it produces the following result −

Hello World

Format command

The following table shows the list of format specifiers available in Tcl −

Specifier Use
%s String representation
%d Integer representation
%f Floating point representation
%e Floating point representation with mantissa-exponent form
%x Hexa decimal representation

Aşağıda bazı basit örnekler verilmiştir -

#!/usr/bin/tclsh

puts [format "%f" 43.5]
puts [format "%e" 43.5]
puts [format "%d %s" 4 tuts]
puts [format "%s" "Tcl Language"]
puts [format "%x" 40]

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

43.500000
4.350000e+01
4 tuts
Tcl Language
28

Tarama komutu

Tarama komutu, format belirleyiciye göre bir dizeyi ayrıştırmak için kullanılır. Aşağıda bazı örnekler gösterilmektedir.

#!/usr/bin/tclsh

puts [scan "90" {%[0-9]} m]
puts [scan "abc" {%[a-z]} m]
puts [scan "abc" {%[A-Z]} m]
puts [scan "ABC" {%[A-Z]} m]

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

1
1
0
1

Liste, Tcl'de bulunan temel veri türlerinden biridir. Sıralı bir öğe koleksiyonunu temsil etmek için kullanılır. Aynı listede farklı türde öğeler içerebilir. Ayrıca, bir liste başka bir liste içerebilir.

Dikkat edilmesi gereken önemli bir şey, bu listelerin tamamen dizeler olarak temsil edilmesi ve gerektiğinde tek tek öğeleri oluşturmak için işlenmesidir. Bu nedenle, büyük listelerden kaçının ve bu gibi durumlarda; dizi kullan.

Liste Oluşturmak

Liste için genel sözdizimi aşağıda verilmiştir -

set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or 
set listName [split "items separated by a character" split_character]

Aşağıda bazı örnekler verilmiştir -

#!/usr/bin/tclsh

set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2 puts $colorList3

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

red green blue
red green blue
red green blue

Bir Listeye Öğe Ekleme

Bir listeye öğe eklemek için sözdizimi aşağıda verilmiştir -

append listName split_character value
# or
lappend listName value

Aşağıda bazı örnekler verilmiştir -

#!/usr/bin/tclsh

set var orange
append var " " "blue"
lappend var "red" 
lappend var "green" 
puts $var

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

orange blue red green

Liste Uzunluğu

Liste uzunluğu sözdizimi aşağıda verilmiştir -

llength listName

Liste uzunluğu örneği aşağıda verilmiştir -

#!/usr/bin/tclsh

set var {orange blue red green}
puts [llength $var]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

4

Dizindeki Liste Öğesi

Belirli bir dizindeki liste öğesini seçmek için sözdizimi aşağıda verilmiştir -

lindex listname index

Dizindeki liste öğesi örneği aşağıda verilmiştir -

#!/usr/bin/tclsh

set var {orange blue red green}
puts [lindex $var  1]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

blue

Dizine Öğe Ekle

Belirli bir dizindeki liste öğelerini eklemek için sözdizimi aşağıda verilmiştir.

linsert listname index value1 value2..valuen

Belirli bir indekse liste öğesi ekleme örneği aşağıda verilmiştir.

#!/usr/bin/tclsh

set var {orange blue red green}
set var [linsert  $var 3 black white]
puts $var

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

orange blue red black white green

Endekslerdeki Kalemleri Değiştirin

Belirli endekslerdeki liste öğelerini değiştirmek için sözdizimi aşağıda verilmiştir -

lreplace listname firstindex lastindex value1 value2..valuen

Belirli endekslerdeki liste öğelerini değiştirme örneği aşağıda verilmiştir.

#!/usr/bin/tclsh

set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

orange blue black white

Dizindeki Öğeyi Ayarla

Belirli bir dizindeki liste öğesinin ayarlanması için sözdizimi aşağıda verilmiştir -

lset listname index value

Liste maddesini belirli bir dizinde ayarlamak için örnek aşağıda verilmiştir -

#!/usr/bin/tclsh

set var {orange blue red green}
lset var 0 black 
puts $var

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

black blue red green

Listeyi Değişkenlere Dönüştür

Değerleri değişkenlere kopyalamak için sözdizimi aşağıda verilmiştir -

lassign listname variable1 variable2.. variablen

Listeyi değişkenlere dönüştürmek için örnek aşağıda verilmiştir -

#!/usr/bin/tclsh

set var {orange blue red green}
lassign $var colour1 colour2 puts $colour1
puts $colour2

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

orange
blue

Bir Listeyi Sıralama

Bir listeyi sıralamak için sözdizimi aşağıda verilmiştir -

lsort listname

Bir listeyi sıralamak için bir örnek aşağıda verilmiştir -

#!/usr/bin/tclsh

set var {orange blue red green}
set var [lsort $var]
puts $var

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

blue green orange red

Sözlük, değerleri anahtarlara eşlemek için bir düzenlemedir. Geleneksel sözlüğün sözdizimi aşağıda gösterilmiştir -

dict set dictname key value
# or 
dict create dictname key1 value1 key2 value2 .. keyn valuen

Sözlük oluşturmaya ilişkin bazı örnekler aşağıda gösterilmiştir -

#!/usr/bin/tclsh

dict set colours  colour1 red 
puts $colours
dict set colours  colour2 green
puts $colours set colours [dict create colour1 "black" colour2 "white"] puts $colours

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

colour1 red
colour1 red colour2 green
colour1 black colour2 white

Dict Boyutu

Dikte boyutunu elde etmek için sözdizimi aşağıda gösterilmiştir -

[dict size dictname]

Boyutu yazdırmak için bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
puts [dict size $colours]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

2

Sözlük Yinelemesi

Anahtarları yazdırmak için basit bir sözlük yinelemesi ve sözlüğün değeri aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
foreach item [dict keys $colours] {
   set value [dict get $colours $item]
   puts $value
}

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

black
white

Dikte Anahtarının Değeri

Dict anahtarının değerini almak için sözdizimi aşağıda gösterilmiştir -

[dict get $dictname $keyname]

Anahtar için değer almanın bir örneği aşağıda verilmiştir -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set value [dict get $colours colour1]
puts $value

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

black

Dikte'deki Tüm Tuşlar

Dict'deki tüm anahtarları almak için sözdizimi aşağıda gösterilmiştir -

[dict keys $dictname]

Tüm tuşları yazdırmak için bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set keys [dict keys $colours] puts $keys

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

colour1 colour2

Dict'deki Tüm Değerler

Dikte'deki tüm değerleri almak için sözdizimi aşağıda gösterilmiştir -

[dict values $dictname]

Tüm değerlerin yazdırılmasına bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set values [dict values $colours]
puts $values

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

black white

Dict'de Anahtar Var

Dikte bir anahtarın olup olmadığını kontrol etmek için sözdizimi aşağıda gösterilmiştir -

[dict exists $dictname $key]

Dikte bir anahtarın olup olmadığını kontrol etmeye yönelik bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

set colours [dict create colour1 "black" colour2 "white"]
set result [dict exists $colours colour1]
puts $result

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

1

Prosedürler, belirli bir yeniden kullanılabilir işlevsellik sağlayan bir dizi komut içeren kod bloklarından başka bir şey değildir. Aynı kodun birden fazla yerde tekrarlanmasını önlemek için kullanılır. Prosedürler, birçok programlama dilinde kullanılan fonksiyonlara eşdeğerdir ve Tcl'de şu şekilde sunulur:proc komut.

Basit bir prosedür oluşturmanın sözdizimi aşağıda gösterilmiştir -

proc procedureName {arguments} {
   body
}

Prosedür için basit bir örnek aşağıda verilmiştir -

#!/usr/bin/tclsh

proc helloWorld {} {
   puts "Hello, World!"
}
helloWorld

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Hello, World!

Birden Çok Bağımsız Değişken İçeren Prosedürler

Bağımsız değişkenli prosedür için bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

proc add {a b} {
   return [expr $a+$b]
}
puts [add 10 30]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

40

Değişken Argümanlara Sahip Prosedürler

Bağımsız değişkenli prosedür için bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

proc avg {numbers} {
   set sum 0
   foreach number $numbers {
      set sum  [expr $sum + $number]
   }
   set average [expr $sum/[llength $numbers]]
   return $average
}
puts [avg {70 80 50 60}]
puts [avg {70 80 50 }]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

65
66

Varsayılan Bağımsız Değişkenlere Sahip Prosedürler

Varsayılan bağımsız değişkenler, değer sağlanmadığında kullanılabilecek varsayılan değerleri sağlamak için kullanılır. Bazen örtük bağımsız değişkenler olarak adlandırılan varsayılan bağımsız değişkenlere sahip bir prosedür örneği aşağıda gösterilmiştir -

#!/usr/bin/tclsh

proc add {a {b 100} } {
   return [expr $a+$b]
}
puts [add 10 30]
puts [add 10]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

40
110

Yinelemeli Prosedürler

Özyinelemeli prosedürler için bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

proc factorial {number} {
   if {$number <= 1} {
      return 1
   } 
   return [expr $number * [factorial [expr $number - 1]]]

}
puts [factorial 3]
puts [factorial 5]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

6
120

Paketler, yeniden kullanılabilir kod birimleri oluşturmak için kullanılır. Bir paket, belirli işlevler sağlayan bir dizi dosyadan oluşur. Bu dosya koleksiyonu bir paket adıyla tanımlanır ve aynı dosyaların birden çok sürümüne sahip olabilir. Paket, Tcl komut dosyalarından, ikili kitaplıktan veya her ikisinin birleşiminden oluşan bir koleksiyon olabilir.

Paket, değişken adlarının ve prosedür adlarının çakışmasını önlemek için ad alanı kavramını kullanır. Bir sonraki ' ad alanı ' eğitimimizde daha fazlasını inceleyin .

Paket Oluşturuluyor

En az iki dosya yardımı ile bir paket oluşturulabilir. Bir dosya paket kodunu içerir. Diğer dosya, paketinizi bildirmek için dizin paketi dosyasını içerir.

Paket oluşturma ve kullanma adımlarının listesi aşağıda verilmiştir.

ADIM 1: Kod Oluşturma

Bir klasör içindeki paket için kod oluşturun, HelloWorld deyin. Dosyanın aşağıda gösterildiği gibi kodla HelloWorld.tcl olarak adlandırılmasına izin verin -

# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl 
# Create the namespace
namespace eval ::HelloWorld {
 
  # Export MyProcedure
  namespace export MyProcedure
 
  # My Variables
   set version 1.0
   set MyDescription "HelloWorld"
 
  # Variable for the path of the script
   variable home [file join [pwd] [file dirname [info script]]]
 
}
 
# Definition of the procedure MyProcedure
proc ::HelloWorld::MyProcedure {} {
   puts $HelloWorld::MyDescription } package provide HelloWorld $HelloWorld::version
package require Tcl 8.0

ADIM 2: Paket Dizini Oluşturma

Tclsh'yi açın. HelloWorld dizinine geçin ve aşağıda gösterildiği gibi indeks dosyasını oluşturmak için pkg_mkIndex komutunu kullanın -

% cd /Users/rajkumar/Desktop/helloworld 
% pkg_mkIndex . *.tcl

ADIM 3: Autopath'a Dizin Ekleme

Paketi aşağıda gösterildiği gibi genel listeye eklemek için lappend komutunu kullanın -

% lappend auto_path "/Users/rajkumar/Desktop/helloworld"

ADIM 4: Paket Ekleme

Ardından, aşağıda gösterildiği gibi paket gerektirir ifadesini kullanarak programa paket ekleyin

% package require HelloWorld 1.0

ADIM 5: Prosedürü Çağırma

Şimdi, her şey kuruluyor, prosedürümüzü aşağıda gösterildiği gibi çalıştırabiliriz -

% puts [HelloWorld::MyProcedure]

Aşağıdaki sonucu alacaksınız -

HelloWorld

İlk iki adım paketi oluşturur. Paket oluşturulduktan sonra, aşağıda gösterildiği gibi son üç ifadeyi ekleyerek herhangi bir Tcl dosyasında kullanabilirsiniz -

lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]

Aşağıdaki sonucu alacaksınız -

HelloWorld

Ad alanı, değişkenleri ve prosedürleri gruplamak için kullanılan tanımlayıcılar kümesi için bir kapsayıcıdır. Ad alanları Tcl 8.0 sürümünde mevcuttur. Ad alanlarının tanıtılmasından önce, tek bir küresel kapsam vardı. Şimdi ad alanlarıyla, küresel kapsamda ek bölümlerimiz var.

Ad Alanı Oluşturma

Ad alanları kullanılarak oluşturulur. namespacekomut. Ad alanı oluşturmanın basit bir örneği aşağıda gösterilmiştir -

#!/usr/bin/tclsh

namespace eval MyMath {
  # Create a variable inside the namespace
  variable myResult
}

# Create procedures inside the namespace
proc MyMath::Add {a b } {  
  set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23

puts $::MyMath::myResult

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

33

Yukarıdaki programda, değişkenli bir ad alanı olduğunu görebilirsiniz. myResult ve bir prosedür Add. Bu, farklı ad alanları altında aynı adlara sahip değişkenler ve prosedürler oluşturmayı mümkün kılar.

İç içe geçmiş ad alanları

Tcl, ad alanlarının yuvalanmasına izin verir. Ad alanlarının iç içe yerleştirilmesi için basit bir örnek aşağıda verilmiştir -

#!/usr/bin/tclsh

namespace eval MyMath {
   # Create a variable inside the namespace
   variable myResult
}

namespace eval extendedMath {
   # Create a variable inside the namespace
   namespace eval MyMath {
      # Create a variable inside the namespace
      variable myResult
   }
}
set ::MyMath::myResult "test1"
puts $::MyMath::myResult
set ::extendedMath::MyMath::myResult "test2"
puts $::extendedMath::MyMath::myResult

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

test1
test2

Ad Alanını İçe ve Dışa Aktarma

Önceki ad alanı örneklerinde görebilirsiniz, çok sayıda kapsam çözümleme operatörü kullanıyoruz ve kullanımı daha karmaşık. Ad alanlarını içe ve dışa aktararak bunu önleyebiliriz. Aşağıda bir örnek verilmiştir -

#!/usr/bin/tclsh

namespace eval MyMath {
   # Create a variable inside the namespace
   variable myResult
   namespace export Add
}

# Create procedures inside the namespace
proc MyMath::Add {a b } {  
   return [expr $a + $b]
}

namespace import MyMath::*
puts [Add 10 30]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

40

Ad Alanını Unutun

İçe aktarılan bir ad alanını şunu kullanarak kaldırabilirsiniz: forgetalt komut. Aşağıda basit bir örnek gösterilmektedir -

#!/usr/bin/tclsh

namespace eval MyMath {
   # Create a variable inside the namespace
   variable myResult
   namespace export Add
}

# Create procedures inside the namespace
proc MyMath::Add {a b } {  
   return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
namespace forget MyMath::*

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

40

Tcl, yerleşik açma, okuma, koyma, alma ve kapatma komutlarının yardımıyla dosya işlemeyi destekler.

Bir dosya, bir metin dosyası veya ikili dosya olması fark etmez, bir bayt dizisini temsil eder.

Dosyaları Açma

Tcl, dosyaları Tcl'de açmak için açma komutunu kullanır. Bir dosyayı açmak için sözdizimi aşağıdaki gibidir -

open fileName accessMode

Buraya, filename dize değişmezidir, dosyanızı adlandırmak için kullanacağınız ve accessMode aşağıdaki değerlerden birine sahip olabilir -

Sr.No. Mod ve Açıklama
1

r

Okuma amacıyla mevcut bir metin dosyasını açar ve dosyanın var olması gerekir. Bu, accessMode belirtilmediğinde kullanılan varsayılan moddur.

2

w

Yazmak için bir metin dosyası açar, yoksa yeni bir dosya oluşturulur, yoksa var olan dosya kesilir.

3

a

Ekleme modunda yazmak için bir metin dosyası açar ve dosyanın mevcut olması gerekir. Burada, programınız mevcut dosya içeriğine içerik eklemeye başlayacaktır.

4

r+

Her ikisini de okumak ve yazmak için bir metin dosyası açar. Dosya zaten mevcut olmalıdır.

5

w+

Her ikisini de okumak ve yazmak için bir metin dosyası açar. Önce dosyayı sıfır uzunluğa kısaltın, aksi takdirde dosya yoksa oluşturun.

6

a+

Her ikisini de okumak ve yazmak için bir metin dosyası açar. Dosya yoksa oluşturur. Okuma baştan başlayacak, ancak yazı sadece eklenebilir.

Bir Dosyayı Kapatmak

Bir dosyayı kapatmak için kapat komutunu kullanın. Kapanış sözdizimi aşağıdaki gibidir -

close fileName

Bir program tarafından açılan herhangi bir dosya, program o dosyayı kullanmayı bitirdiğinde kapatılmalıdır. Çoğu durumda, dosyaların açıkça kapatılması gerekmez; Dosya nesneleri otomatik olarak sonlandırıldığında otomatik olarak kapatılırlar.

Dosya Yazma

Puts komutu, açık bir dosyaya yazmak için kullanılır.

puts $filename "text to write"

Bir dosyaya yazmak için basit bir örnek aşağıda gösterilmiştir.

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test" close $fp

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, yeni bir dosya oluşturur input.txt başlatıldığı dizinde (programın çalışma dizininde).

Bir Dosyayı Okumak

Bir dosyadan okumak için basit bir komut aşağıdadır -

set file_data [read $fp]

Aşağıda tam bir okuma ve yazma örneği gösterilmektedir -

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test"
close $fp set fp [open "input.txt" r] set file_data [read $fp]
puts $file_data close $fp

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, önceki bölümde oluşturulan dosyayı okur ve aşağıdaki sonucu verir -

test

İşte dosyanın sonuna kadar satır satır okumak için başka bir örnek -

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test\ntest" close $fp
set fp [open "input.txt" r]

while { [gets $fp data] >= 0 } { puts $data
}
close $fp

Yukarıdaki kod derlendiğinde ve çalıştırıldığında, önceki bölümde oluşturulan dosyayı okur ve aşağıdaki sonucu verir -

test
test

Tcl'de hata işleme, error ve catchkomutlar. Bu komutların her birinin sözdizimi aşağıda gösterilmiştir.

Hata sözdizimi

error message info code

Yukarıdaki hata komutu sözdiziminde, mesaj hata mesajıdır, bilgi errorInfo global değişkeninde ayarlanır ve kod genel değişken errorCode'da ayarlanır.

Sözdizimini Yakala

catch script resultVarName

Yukarıdaki catch komutu sözdiziminde, komut dosyası çalıştırılacak koddur, resultVarName ise hatayı veya sonucu tutan değişkendir. Catch komutu, hata yoksa 0, hata varsa 1 döndürür.

Basit hata işlemeye bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

proc Div {a b} {
   if {$b == 0} {
      error "Error generated by error" "Info String for error" 401
   } else {
      return [expr $a/$b]
   }
}

if {[catch {puts "Result = [Div 10 0]"} errmsg]} {
   puts "ErrorMsg: $errmsg" puts "ErrorCode: $errorCode"
   puts "ErrorInfo:\n$errorInfo\n" } if {[catch {puts "Result = [Div 10 2]"} errmsg]} { puts "ErrorMsg: $errmsg"
   puts "ErrorCode: $errorCode" puts "ErrorInfo:\n$errorInfo\n"
}

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

ErrorMsg: Error generated by error
ErrorCode: 401
ErrorInfo:
Info String for error
   (procedure "Div" line 1)
   invoked from within
"Div 10 0"

Result = 5

Yukarıdaki örnekte görebileceğiniz gibi, kendi özel hata mesajlarımızı oluşturabiliriz. Benzer şekilde, Tcl tarafından üretilen hatayı yakalamak da mümkündür. Aşağıda bir örnek gösterilmiştir -

#!/usr/bin/tclsh

catch {set file [open myNonexistingfile.txt]} result
puts "ErrorMsg: $result" puts "ErrorCode: $errorCode"
puts "ErrorInfo:\n$errorInfo\n"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

ErrorMsg: couldn't open "myNonexistingfile.txt": no such file or directory
ErrorCode: POSIX ENOENT {no such file or directory}
ErrorInfo:
couldn't open "myNonexistingfile.txt": no such file or directory
   while executing
"open myNonexistingfile.txt"

Tcl, çeşitli işlemler için bir dizi yerleşik işlev (prosedür) sağlar. Bu içerir -

  • Liste işleme işlevleri .

  • Dizgi işleme fonksiyonları .

  • Dizi işleme fonksiyonları .

  • Sözlük işleme işlevleri .

  • Dosya G / Ç işlemesi için işlevler .

  • Ad alanları ve paketler oluşturmak için işlevler .

  • Matematik işlemleri için fonksiyonlar.

  • Sistem işlemleri için işlevler.

Matematik ve sistem işlevleri dışında yukarıdakilerin her biri daha önceki bölümlerde ele alınmıştır. Matematik ve sistem yerleşik işlevleri aşağıda açıklanmıştır.

Matematik Fonksiyonları

Tcl'de bulunan matematik fonksiyonları aşağıdaki tabloda listelenmiştir -

Sr.No. Yöntem ve Açıklama
1

abs argüman

Arg'nin mutlak değerini hesaplar.

2

acos argüman

Arg'nin arkkosinüsünü hesaplar.

3

asin argüman

Arg 'nin arkini hesaplar.

4

atan argüman

Arg'nin arktanjantını hesaplar.

5

atan2 yx

Bağımsız değişkenlerinin (y / x) bölümünün arktanjantını hesaplar.

6

ceil argüman

Bir sayıya eşit veya daha büyük olan en küçük tamsayıyı hesaplar.

7

cos argüman

Arg'nin kosinüsünü hesaplar.

8

cosh argüman

Arg'nin hiperbolik kosinüsünü hesaplar.

9

double argüman

Arg'nin bir kayan nokta değeri olup olmadığını hesaplar, arg döndürür, aksi takdirde arg'yi kayan noktaya dönüştürür ve dönüştürülen değeri döndürür.

10

exp argüman

Üstel bir işlevi hesaplar (e, arg'nin kuvvetine yükseltilmiştir).

11

floor argüman

Arg'den küçük veya ona eşit en büyük tamsayıyı hesaplar.

12

fmod xy

X'in y'ye bölünmesinin kalan kayan noktasını hesaplar. Y 0 ise, bir hata döndürülür.

13

hypot xy

Dik açılı bir üçgen sqrt'nin (x * x + y * y) hipotenüs uzunluğunu hesaplar.

14

int argüman

Arg, makine kelimesiyle aynı genişlikte bir tamsayı ise, arg döndürür, aksi takdirde arg'yi bir tam sayıya dönüştürürse hesaplar.

15

log argüman

Arg'nin doğal logaritmasını hesaplar.

16

log10 argüman

Arg'nin 10 tabanlı logaritmasını hesaplar.

17

pow xy

Y kuvvetine yükseltilmiş x değerini hesaplar. X negatifse, y bir tamsayı değeri olmalıdır.

18

rand

0 ile 1 arasında sözde rastgele bir sayıyı hesaplar.

19

round argüman

En yakın tam sayıya yuvarlanmış arg 'nin değerini hesaplar.

20

sin argüman

Arg'nin sinüsünü hesaplar.

21

sinh argüman

Arg'nin hiperbolik sinüsünü hesaplar.

22

sqrt argüman

Arg'nin karekökünü hesaplar. argüman pozitif olmalıdır.

23

srand argüman

0 ile 1 arasında sözde rasgele bir sayıyı hesaplar. Tam sayı olması gereken arg, rand rasgele sayı üretecinin çekirdeğini sıfırlamak için kullanılır.

24

tan argüman

Arg'nin tanjantını hesaplar.

25

tanh argüman

Arg'nin hiperbolik tanjantını hesaplar.

26

wide argüman

Zaten bir sayı değilse, arg için en az 64 bit genişliğinde tamsayı değerini hesaplar (arg, 32 bitlik bir sayı ise işaret uzantısıyla).

Matematik fonksiyonlarını kullanan bazı örnekler aşağıda verilmiştir -

#!/usr/bin/tclsh

namespace import ::tcl::mathfunc::*
puts [tan 10]
puts [pow 10 2]
puts [ceil 10.34]
puts [hypot 10 20]
puts [srand 45]
puts [log 10]
puts [srand 45]

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

0.6483608274590866
100.0
11.0
22.360679774997898
0.0003521866166741525
2.302585092994046
0.0003521866166741525

Sistem Fonksiyonları

Tcl'deki önemli sistem fonksiyonları şunları içerir:

  • clock - saniye cinsinden geçerli zamanı döndüren saniye işlevi.

  • clock - Saniyeleri tarih ve saate biçimlendiren biçim işlevi.

  • clock - girdi dizesini tarayan ve saniyeye dönüştüren tarama işlevi.

  • open - bir dosyayı açmak için kullanılan işlev.

  • exec - bir sistem komutunu yürütmek için kullanılan işlev.

  • close - bir dosyayı kapatmak için kullanılan işlev.

Yukarıdaki işlevler için bazı örnekler aşağıda listelenmiştir -

#!/usr/bin/tclsh

#get seconds
set currentTime [clock seconds]
puts $currentTime
#get format 
puts "The time is: [clock format $currentTime -format %H:%M:%S]" puts "The date is: [clock format $currentTime -format %D]"

set date "Jun 15, 2014"
puts [clock scan $date -format {%b %d, %Y}] puts [exec ls] puts [exec dir] set a [open input.txt] puts [read $a];
puts $a close $a

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

1402819756
The time is: 03:09:16
The date is: 06/15/2014
1402808400
input.txt
main.tcl
input.txt  main.tcl
This is the file you can use to provide input to your program and later on open
   it inside your program to process the input.

file3

Aşağıdaki tablo, tarih ve saati biçimlendirmek için kullanılabilecek liste dizelerini sağlar.

Sr.No. Biçim ve Açıklama
1

%a

Kısaca gün, örneğin: Güneş.

2

%A

Tam biçimdeki gün, örneğin: Pazar.

3

%b

Kısaca ay.

4

%B

Tam formda ay.

5

%d

Ayın günü.

6

%j

Yılın Jülyen günü.

7

%m

Sayı olarak ay.

8

%y

İki basamaklı yıl.

9

%Y

Dört basamaklı yıl.

10

%H

24 saatlik biçimde saat.

11

%I

12 saatlik biçimde saat.

12

%M

Dakika.

13

%S

Saniyeler.

14

%p

AM veya PM.

15

%D

Sayı olarak tarih, aa / gg / yy.

16

%r

12 saatlik zaman biçiminde.

17

%R

Saniyesiz 24 saatlik zaman biçiminde zaman.

18

%T

24 saatlik zaman biçiminde saniye ile zaman.

19

%Z

GMT, IST, EST ve benzeri gibi Saat Dilimi Adı.

"Regexp" komutu, Tcl'deki bir normal ifadeyi eşleştirmek için kullanılır. Normal ifade, bir arama modeli içeren bir karakter dizisidir. Birden fazla kuraldan oluşur ve aşağıdaki tablo bu kuralları ve ilgili kullanımı açıklamaktadır.

Sr.No. Kural ve Açıklama
1

x

Tam eşleşme.

2

[a-z]

Az'dan herhangi bir küçük harf.

3

.

Herhangi bir karakter.

4

^

Başlangıç ​​dizesi eşleşmelidir.

5

$

Bitiş dizesi eşleşmelidir.

6

\^

Özel karakter ^ ile eşleşecek boşluk dizisi. Benzer şekilde diğer karakterler için de kullanabilirsiniz.

7

()

Normal bir ifade oluşturmak için yukarıdaki dizileri parantez içine ekleyin.

8

x*

Önceki x'in 0 veya daha fazla oluşumuyla eşleşmelidir.

9

x+

Önceki x'in 1 veya daha fazla oluşumuyla eşleşmelidir.

10

[a-z]?

Önceki x'in 0 veya 1 oluşumuyla eşleşmelidir.

11

{digit}

Önceki normal ifade ifadesinin tam olarak basamak oluşumlarıyla eşleşir. 0-9 içeren rakam.

12

{digit,}

Önceki normal ifade ifadesinin 3 veya daha fazla basamak oluşumuyla eşleşir. 0-9 içeren rakam.

13

{digit1,digit2}

Oluşumlar, önceki normal ifade ifadesinin rakam1 ve rakam2 oluşumu arasındaki aralıkla eşleşir.

Sözdizimi

Normal ifadenin sözdizimi aşağıda verilmiştir -

regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn

Burada regex komuttur. İsteğe bağlı anahtarları daha sonra göreceğiz. Kalıplar, daha önce de belirtildiği gibi kurallardır. Arama dizesi, normal ifadenin gerçekleştirildiği gerçek dizedir. Tam eşleme, eşleşen normal ifade sonucunun sonucunu tutan herhangi bir değişkendir. Submatch1'den SubMatchn'e, alt eşleşme modellerinin sonucunu tutan isteğe bağlı subMatch değişkenidir.

Karmaşık olanlara dalmadan önce bazı basit örneklere bakalım. Herhangi bir alfabeye sahip bir dizeye basit bir örnek. Normal ifadede başka bir karakterle karşılaşıldığında, arama durdurulur ve döndürülür.

#!/usr/bin/tclsh

regexp {([A-Za-z]*)} "Tcl Tutorial" a b 
puts "Full Match: $a"
puts "Sub Match1: $b"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Full Match: Tcl
Sub Match1: Tcl

Çoklu Modeller

Aşağıdaki örnek, birden çok modelin nasıl aranacağını gösterir. Bu, herhangi bir harfin ardından gelen herhangi bir karakterin izlediği herhangi bir alfabe için örnek kalıptır.

#!/usr/bin/tclsh

regexp {([A-Za-z]*).([A-Za-z]*)} "Tcl Tutorial" a b c  
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Full Match: Tcl Tutorial
Sub Match1: Tcl
Sub Match2: Tutorial

Bir alt desenin birden fazla desen içerebileceğini göstermek için yukarıdaki kodun değiştirilmiş bir versiyonu aşağıda gösterilmiştir -

#!/usr/bin/tclsh

regexp {([A-Za-z]*.([A-Za-z]*))} "Tcl Tutorial" a b c  
puts "Full Match: $a" puts "Sub Match1: $b"
puts "Sub Match2: $c"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial

Regex Komutu Anahtarları

Tcl'de bulunan anahtarların listesi,

  • nocase - Büyük / küçük harfleri yok saymak için kullanılır.

  • indices - Eşleşen karakterler yerine eşleşen alt kalıpların konumunu saklayın.

  • line- Yeni satıra duyarlı eşleme. Yeni satırdan sonraki karakterleri yok sayar.

  • start index - Arama paterninin başlangıcının ofsetini ayarlar.

  • Anahtarların sonunu işaretler

Yukarıdaki örneklerde, tüm alfabeler için bilinçli olarak [AZ, az] kullandım, aşağıda gösterildiği gibi -nocase'i kolayca kullanabilirsiniz -

#!/usr/bin/tclsh

regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c  
puts "Full Match: $a"
puts "Sub Match1: $b" puts "Sub Match2: $c"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Full Match: Tcl Tutorial
Sub Match1: Tcl Tutorial
Sub Match2: Tutorial

Anahtarların kullanıldığı başka bir örnek aşağıda gösterilmiştir -

#!/usr/bin/tclsh

regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b 
puts "Full Match: $a" puts "Sub Match1: $b"
regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b  
puts "Full Match: $a" puts "Sub Match1: $b"

Yukarıdaki kod çalıştırıldığında, aşağıdaki sonucu verir -

Full Match: Tcl 
Sub Match1: Tcl 
Full Match: Tutorial
Sub Match1: Tutorial

Tk, Toolkit'e atıfta bulunur ve bir Grafik Kullanıcı Arayüzü oluşturmanıza yardımcı olan çapraz platform GUI widget'ları sağlar. John Ousterhout tarafından Tcl betik dilinin bir uzantısı olarak geliştirilmiştir. Tk, versiyonun birbirinden farklı olmasıyla Tcl'den bağımsız olarak geliştirilmeye devam etti, daha önce v8.0'da Tcl ile senkronize olarak yapıldı.

Tk'nin Özellikleri

Linux, Mac OS, Unix ve Microsoft Windows işletim sistemlerini destekleyen çapraz platformdur.

  • Açık kaynaktır.
  • Yüksek düzeyde uzayabilirlik sağlar.
  • Özelleştirilebilir.
  • Yapılandırılabilir.
  • Çok sayıda widget sağlar.
  • Sadece Tcl ile değil diğer dinamik dillerle de kullanılabilir.
  • GUI, platformlar arasında aynı görünüyor.

Tk Dahili Uygulamalar

Tcl / Tk'de büyük başarılı uygulamalar oluşturulmuştur.

  • Dashboard Soft Kullanıcı Arayüzü
  • İlişkisel DB için Form GUI'si
  • İlişkisel DB için Ad Hoc GUI
  • Yazılım / Donanım Sistem Tasarımı
  • Xtask - Görev Yönetimi
  • Tcl ve Tk ile Müzikoloji
  • Takvim uygulaması
  • Tk mail
  • Tk Hata Ayıklayıcı

Genel olarak, tüm Mac ve Linux macları Tk önceden yüklenmiş olarak gelir. Mevcut değilse veya en son sürüme ihtiyacınız varsa, o zaman onu yüklemeniz gerekebilir. Windows, Tcl / Tk ile birlikte gelmez ve onu yüklemek için özel ikilisini kullanmanız gerekebilir.

Tk Tercümanı

Bu, Tk komutlarını yazmanıza ve bunları satır satır çalıştırmanıza olanak veren küçük bir programdır. Bir tcl dosyasının yürütülmesini durdurur, tam olarak çalışan bir derleyicinin aksine bir hatayla karşılaşır.

Aşağıdaki gibi bir helloWorld.tcl dosyası alalım. Bunu ilk program olarak kullanacağız, seçtiğiniz platformda çalıştırıyoruz.

#!/usr/bin/wish

grid [ttk::button .mybutton -text "Hello World"]

Aşağıdaki bölüm yalnızca Tcl / Tk'nin mevcut platformların her birine nasıl kurulacağını açıklamaktadır.

Windows üzerine kurulum

Windows yükleyicisi için en son sürümü mevcut Active Tcl / Tk ikili dosyaları listesinden indirin . Active Tcl / Tk topluluk sürümü kişisel kullanım için ücretsizdir.

Ekrandaki talimatları izleyerek yapılabilen Tcl ve Tk'yi yüklemek için indirilen yürütülebilir dosyayı çalıştırın.

Şimdi, cd kullanarak dosyayı içeren klasöre geçip ardından aşağıdaki adımı kullanarak merhabaWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz -

C:\Tcl> wish helloWorld.tcl

Enter tuşuna basın ve aşağıda gösterildiği gibi bir çıktı göreceğiz -

Linux üzerine kurulum

Çoğu Linux işletim sistemi Tk yerleşik olarak gelir ve bu sistemlerde hemen başlayabilirsiniz. Mevcut değilse, Tcl-Tk'yi indirmek ve kurmak için aşağıdaki komutu kullanabilirsiniz.

$ yum install tcl tk

Şimdi, şunu kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz. cd command ve ardından aşağıdaki adımı kullanarak -

$ wish helloWorld.tcl

Enter tuşuna basın ve aşağıdakine benzer bir çıktı göreceğiz -

Debian Tabanlı Sistemlere Kurulum

İşletim sisteminizde önceden oluşturulmuş değilse, Tcl-Tk'yi indirmek ve kurmak için aşağıdaki komutu kullanabilirsiniz -

$ sudo apt-get install tcl tk

Şimdi, şunu kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz. cd command ve ardından aşağıdaki adımları kullanarak -

$ wish helloWorld.tcl

Enter tuşuna basın ve aşağıdakine benzer bir çıktı göreceğiz -

Mac OS X üzerine kurulum

Mac OS X paketi için en son sürümü mevcut Active Tcl / Tk ikili dosyaları listesinden indirin. Active Tcl topluluk sürümü kişisel kullanım için ücretsizdir.

Ekrandaki talimatları izleyerek yapılabilen Active Tcl'yi kurmak için indirilen yürütülebilir dosyayı çalıştırın.

Şimdi, şunu kullanarak dosyayı içeren klasöre geçerek helloWorld.tcl diyen bir Tcl dosyası oluşturabilir ve çalıştırabiliriz. cd command ve ardından aşağıdaki adımı kullanarak -

$ wish helloWorld.tcl

Enter tuşuna basın ve aşağıda gösterildiği gibi bir çıktı göreceğiz -

Kaynak Dosyalardan Kurulum

İkili paket mevcut olmadığında kaynak dosyalardan yükleme seçeneğini kullanabilirsiniz. Genellikle Windows ve Mac OS X için Tk ikili dosyalarının kullanılması tercih edilir, bu nedenle aşağıda yalnızca unix tabanlı sistemdeki kaynakların derlenmesi gösterilmektedir -

  • Kaynak dosyaları indirin .

  • Şimdi, indirilen klasöre geçtikten sonra ayıklamak, derlemek ve oluşturmak için aşağıdaki komutları kullanın.

$ tar zxf tk8.6.1-src.tar.gz
$ cd tcl8.6.1 $ cd unix
$ ./configure —with-tcl=../../tcl8.6.1/unix —prefix=/opt —enable-gcc $ make
$ sudo make install

Note - Dosya adını, yukarıdaki 1 ve 2 numaralı komutlarla indirdiğiniz sürümle değiştirdiğinizden emin olun.

Tk'de bazı değişkenleri özel değişkenler olarak sınıflandırıyoruz ve önceden tanımlanmış bir kullanım / işlevselliğe sahipler. Özel değişkenlerin listesi aşağıda listelenmiştir.

Sr.No. Özel Değişken ve Açıklama
1

tk_library

Standart Tk kitaplıklarının konumunu ayarlamak için kullanılır.

2

tk_patchLevel

Tk yorumlayıcısının mevcut yama düzeyini ifade eder.

3

tk_strictMotif

Sıfır olmadığında, Tk Motif'e mümkün olduğunca yakından bakmaya çalışır.

4

tk_version

Tk sürümünü görüntüler.

Yukarıdaki özel değişkenlerin Tk yorumlayıcısı için özel anlamları vardır.

Tk özel değişkenlerini kullanma örnekleri

Özel değişkenler için örneklere bakalım.

TK VERSİYONU

#!/usr/bin/wish

puts $tk_version

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız.

8.5

TK KÜTÜPHANE YOLU

#!/usr/bin/wish

puts $tk_library

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız.

/Library/Frameworks/Tk.framework/Versions/8.6/Resources/Scripts

TK YAMA SEVİYESİ

#!/usr/bin/wish

puts $tk_patchLevel

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız.

8.6.1

TK STRICTMOTIF

#!/usr/bin/wish

puts $tk_strictMotif

Programı çalıştırdığınızda, aşağıda gösterildiği gibi benzer bir çıktı alacaksınız.

0

Tk tabanlı bir uygulamanın temel bileşenine widget denir. Bir bileşene bazen pencere de denir, çünkü Tk'de "pencere" ve "pencere öğesi" genellikle birbirinin yerine kullanılır. Tk, Tcl ile grafiksel uygulamalar oluşturmak için zengin bir grafik bileşen seti sağlayan bir pakettir.

Tk, düğmeler ve menüler gibi temel GUI widget'larından veri görüntüleme widget'larına kadar çeşitli widget'lar sağlar. Widget'lar, kullanımlarını kolaylaştıran varsayılan yapılandırmalara sahip oldukları için çok yapılandırılabilir.

Tk uygulamaları, herhangi bir sayıda widget'ın başka bir widget'a ve bu widget'ların başka bir widget'a yerleştirilebildiği bir widget hiyerarşisini takip eder. Bir Tk programındaki ana pencere öğesi, kök pencere öğesi olarak adlandırılır ve TkRoot sınıfının yeni bir örneği oluşturularak oluşturulabilir.

Bir Widget Oluşturma

Bir pencere öğesi oluşturmanın sözdizimi aşağıda verilmiştir.

type variableName arguments options

Buradaki tür, düğme, etiket vb. Gibi widget türünü ifade eder. Bağımsız değişkenler isteğe bağlı olabilir ve her parçacığın ayrı sözdizimine bağlı olarak gerekli olabilir. Seçenekler, her bileşenin boyutundan biçimlendirmesine kadar değişir.

Widget Adlandırma Kuralı

Widget, paketlerin adlandırılmasına benzer bir yapı kullanır. Tk'de, kök pencere bir nokta (.) İle adlandırılır ve penceredeki bir öğe, örneğin düğme .myButton1 olarak adlandırılır. Değişken adı küçük harf, rakam veya noktalama işaretiyle başlamalıdır (nokta hariç). İlk karakterden sonra, diğer karakterler büyük veya küçük harfler, sayılar veya noktalama işaretleri olabilir (noktalar hariç). Etiketi başlatmak için küçük harf kullanılması önerilir.

Renk Adlandırma Kuralı

Renkler kırmızı, yeşil vb. Adlar kullanılarak beyan edilebilir. Ayrıca # ile gösterimi onaltılı olarak da kullanabilir. Onaltılık basamak sayısı 3, 6, 9 veya 12 olabilir.

Boyut Sözleşmesi

Varsayılan birim pikseldir ve boyut belirtmediğimizde kullanılır. Diğer boyutlar inç için i, milimetre için m, santimetre için c ve noktalar için p'dir.

Ortak Seçenekler

Tüm widget'larda kullanılabilen çok sayıda ortak seçenek vardır ve bunlar aşağıdaki tabloda listelenmiştir -

Sr.No. Sözdizimi ve Açıklama
1

-background color

Widget için arka plan rengini ayarlamak için kullanılır.

2

-borderwidth width

3B efektlerde kenarlıkla çizim yapmak için kullanılır.

3

-font fontDescriptor

Widget için yazı tipini ayarlamak için kullanılır.

4

-foreground color

Widget için ön plan rengini ayarlamak için kullanılır.

5

-height number

Widget için yüksekliği ayarlamak için kullanılır.

6

-highlightbackground color

Widget'ın giriş odağı olmadığında, renk dikdörtgenini bir widget etrafında çizecek şekilde ayarlamak için kullanılır.

7

-highlightcolor color

Widget giriş odağına sahip olduğunda bir widget etrafında çizilecek şekilde renk dikdörtgenini ayarlamak için kullanılır.

8

-padx number

Widget için padx'i ayarlar.

9

-pady number

Widget için pady'yi ayarlar.

10

-relief condition

Bu widget için 3B kabartmayı ayarlar. Durum yükseltilmiş, batık, düz, sırt, sağlam veya oluk olabilir.

11

-text text

Widget için metni ayarlar.

12

-textvariable varName

Widget ile ilişkilendirilen değişken. Parçacık metni değiştiğinde, değişken parçacığın metni ile ayarlanır.

13

-width number

Widget için genişliğini ayarlar.

Seçenekler için basit bir örnek aşağıda gösterilmiştir.

#!/usr/bin/wish

grid [label .myLabel -background red -text "Hello World" -relief ridge -borderwidth 3]
   -padx 100 -pady 100

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız.

Kullanılabilir bileşenlerin listesi aşağıda kategorize edilmiştir -

Temel gereçler

Sr.No. Widget ve Açıklama
1

Label

Tek metin satırını görüntülemek için widget.

2

Button

Tıklanabilir ve bir eylemi tetikleyen widget.

3

Entry

Widget, giriş olarak tek bir metin satırını kabul etmek için kullanılır.

4

Message

Birden çok metin satırını görüntülemek için widget.

5

Text

Birden çok metin satırını görüntülemek ve isteğe bağlı olarak düzenlemek için Widget.

6

Toplevel

Pencere yöneticisi tarafından sağlanan tüm sınırların ve süslemelerin bulunduğu pencere.

Düzen Widget'ları

Sr.No. Widget ve Açıklama
1

Frame

Diğer widget'ları tutmak için konteyner widget'ı.

2

Place

Diğer widget'ları orijin koordinatları ve tam boyutu ile belirli bir yerde tutmak için Widget.

3

Pack

Widget'ları ana widget'a yerleştirmeden önce bloklar halinde düzenlemek için basit widget.

4

Grid

Farklı yönlerde paketlenen widget'ları yerleştirmek için Widget.

Seçim Widget'ları

Sr.No. Widget ve Açıklama
1

Radiobutton

Biri seçilebilen bir dizi açma / kapama düğmesi ve etikete sahip widget.

2

Checkbutton

Birçoğu seçilebilen bir dizi açma / kapama düğmesi ve etikete sahip widget.

3

Menu

Menü öğeleri için tutucu görevi gören widget.

4

Listbox

Biri veya daha fazlası seçilebilen hücrelerin listesini görüntüleyen pencere öğesi.

Mega Widget'lar

Sr.No. Widget ve Açıklama
1

Dialog

İletişim kutularını görüntülemek için widget.

2

Spinbox

Kullanıcıların sayı seçmesine izin veren widget.

3

Combobox

Bir girişi, kullanıma sunulan seçenekler listesiyle birleştiren widget.

4

Notebook

Bir dizin sekmesi kullanarak birkaç sayfadan biri arasında geçiş yapmaya yardımcı olan sekmeli widget.

5

Progressbar

Dosya yükleme gibi uzun bir işlemin ilerleyişine görsel geri bildirim sağlayan Widget.

6

Treeview

Widget, bir öğe hiyerarşisinde daha çok ağaç biçiminde görüntülemeye ve göz atmaya izin verir.

7

Scrollbar

Metin veya tuval widget'ları olmadan widget'ları kaydırma.

8

Scale

Kaydırıcılar aracılığıyla sayısal bir değer seçmek için widget'ı ölçekleyin.

Diğer Widget'lar

Sr.No. Widget ve Açıklama
1

Canvas

Grafikleri ve resimleri görüntülemek için çizim gereci.

Bu widget'ların her birini önümüzdeki bölümlerde ele alacağız.

Temel pencere öğeleri, hemen hemen tüm Tk uygulamalarında bulunan ortak pencere öğeleridir. Mevcut temel bileşenlerin listesi aşağıda verilmiştir -

Sr.No. Widget'lar ve Açıklama
1 Etiket

Tek metin satırını görüntülemek için widget.

2 Buton

Tıklanabilir ve bir eylemi tetikleyen widget.

3 Giriş

Widget, giriş olarak tek bir metin satırını kabul etmek için kullanılır.

4 İleti

Birden çok metin satırını görüntülemek için widget.

5 Metin

Birden çok metin satırını görüntülemek ve isteğe bağlı olarak düzenlemek için Widget.

6 Üst düzey

Widget, yeni bir üst seviye pencere olan bir çerçeve oluşturmak için kullanılır.

Basit bir Tk örneği aşağıda temel widget'lar kullanılarak gösterilmektedir -

#!/usr/bin/wish

grid [label .myLabel -text "Label Widget" -textvariable labelText] 
grid [text .myText -width 20 -height 5]
.myText insert 1.0 "Text\nWidget\n"
grid [entry .myEntry -text "Entry Widget"]
grid [message .myMessage -background red -foreground white -text "Message\nWidget"]
grid [button .myButton1  -text "Button" -command "set labelText clicked"]

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Mizanpaj widget'ları, Tk uygulaması için mizanpajları işlemek için kullanılır. Çerçeve widget'ı, diğer widget'ları gruplandırmak için kullanılır ve yer, paket ve ızgara, pencerelere eklemeniz üzerinde size tam kontrol sağlamak için düzen yöneticileridir. Mevcut düzen widget'larının listesi aşağıda gösterildiği gibidir -

Sr.No. Widget'lar ve Açıklama
1 Çerçeve

Diğer widget'ları tutmak için konteyner widget'ı.

2 Yer

Diğer widget'ları orijin koordinatları ve tam boyutu ile belirli bir yerde tutmak için Widget.

3 Paketi

Widget'ları ana widget'a yerleştirmeden önce bloklar halinde düzenlemek için basit widget.

4 Kafes

Farklı yönlerde paketlenen widget'ları yerleştirmek için Widget.

Düzen widget'ları için aşağıda basit bir Tk örneği gösterilmektedir -

#!/usr/bin/wish

frame .myFrame1 -background red  -relief ridge -borderwidth 8 -padx 10 -pady 10
   -height 100 -width 100
frame .myFrame2 -background blue  -relief ridge -borderwidth 8 -padx 10 -pady 10
   -height 100 -width 50
pack .myFrame1 
pack .myFrame2

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Seçim widget'ları, bir Tk uygulamasında farklı seçenekleri seçmek için kullanılır. Mevcut seçim widget'larının listesi aşağıda gösterildiği gibidir.

Sr.No. Widget'lar ve Açıklama
1 Radyo düğmesi

Biri seçilebilen bir dizi açma / kapama düğmesi ve etikete sahip widget.

2 Kontrol düğmesi

Birçoğu seçilebilen bir dizi açma / kapama düğmesi ve etikete sahip widget.

3 Menü

Menü öğeleri için tutucu görevi gören widget.

4 Liste kutusu

Biri veya daha fazlası seçilebilen hücrelerin listesini görüntüleyen pencere öğesi.

Seçim widget'ları kullanılarak aşağıda basit bir Tk örneği gösterilmektedir -

#!/usr/bin/wish

grid [frame .gender ]
grid [label .label1  -text "Male" -textvariable myLabel1 ] 
grid [radiobutton .gender.maleBtn -text "Male"   -variable gender -value "Male"
   -command "set  myLabel1 Male"] -row 1 -column 2
grid [radiobutton .gender.femaleBtn -text "Female" -variable gender -value "Female"
   -command "set  myLabel1 Female"] -row 1 -column 3
.gender.maleBtn select
grid [label .myLabel2  -text "Range 1 not selected" -textvariable myLabelValue2 ] 
grid [checkbutton .chk1 -text "Range 1" -variable occupied1 -command {if {$occupied1 } {
   set myLabelValue2 {Range 1 selected}
} else {
   set myLabelValue2 {Range 1 not selected}
} }]
proc setLabel {text} {
   .label configure -text $text 
}

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Kanvas, çizim alanları sağlamak için kullanılır. Tuval widget'ının sözdizimi aşağıda gösterilmiştir -

canvas canvasName options

Seçenekler

Tuval pencere öğesi için kullanılabilen seçenekler aşağıdaki tabloda listelenmiştir -

Sr.No. Sözdizimi ve Açıklama
1

-background color

Widget için arka plan rengini ayarlamak için kullanılır.

2

-closeenough distance

Fare imlecinin görüntülenebilir bir öğeye yakınlığını ayarlar. Varsayılan 1.0 pikseldir. Bu değer bir kesir olabilir ve pozitif olmalıdır.

3

-scrollregion boundingBox

Bu tuvalin toplam alanı için sınırlayıcı kutu.

4

-height number

Widget için yüksekliği ayarlamak için kullanılır.

5

-width number

Widget için genişliğini ayarlar.

6

-xscrollincrement size

Kaydırma istendiğinde yatay kaydırma miktarı.

7

-yscrollincrement size

Kaydırma istendiğinde dikey kaydırılacak miktar.

Tuval widget'ına basit bir örnek aşağıda gösterilmektedir -

#!/usr/bin/wish

canvas .myCanvas -background red -width 100 -height 100 
pack .myCanvas

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Tuvalde Çizim için Pencere Öğeleri

Kanvas içinde çizim için mevcut widget'ların listesi aşağıda listelenmiştir -

Sr.No. Widget ve Açıklama
1 Hat

Bir çizgi çizer.

2 Ark

Yay çizer.

3 Dikdörtgen

Bir dikdörtgen çizer.

4 Oval

Bir oval çizer.

5 Çokgen

Bir çokgen çizer.

6 Metin

Bir metin çizer.

7 Bit eşlem

Bir bit eşlem çizer.

8 Resim

Bir görüntü çizer.

Farklı tuval widget'larının kullanıldığı bir örnek aşağıda gösterilmiştir -

#!/usr/bin/wish

canvas .myCanvas -background red -width 200 -height 200 
pack .myCanvas
.myCanvas create arc 10 10 50 50 -fill yellow
.myCanvas create line 10 30 50 50 100 10 -arrow both -fill yellow -smooth true
   -splinesteps 2
.myCanvas create oval 50 50 100 80 -fill yellow
.myCanvas create polygon 50 150 100 80 120 120 100 190 -fill yellow -outline green
.myCanvas create rectangle 150 150 170 170  -fill yellow
.myCanvas create text 170 20 -fill yellow -text "Hello" -font {Helvetica -18 bold}
.myCanvas create bitmap 180 50 -bitmap info

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Mega widget'lar, bazı büyük ölçekli Tk uygulamalarında genellikle gerekli olan birçok karmaşık widget içerir. Mevcut mega widget'ların listesi aşağıda gösterildiği gibidir -

Sr.No. Widget ve Açıklama
1 Diyalog

İletişim kutularını görüntülemek için widget.

2 Eğirme kutusu

Kullanıcıların sayı seçmesine izin veren widget.

3 Açılan kutu

Bir girişi, kullanıma sunulan seçenekler listesiyle birleştiren widget.

4 Not defteri

Bir dizin sekmesi kullanarak birkaç sayfadan biri arasında geçiş yapmaya yardımcı olan sekmeli widget.

5 İlerleme çubuğu

Dosya yükleme gibi uzun bir işlemin ilerleyişine görsel geri bildirim sağlayan Widget.

6 Ağaç görünümü

Widget, bir öğe hiyerarşisinde daha çok ağaç biçiminde görüntülemeye ve göz atmaya izin verir.

7 Kaydırma çubuğu

Metin veya tuval widget'ları olmadan widget'ları kaydırma.

8 Ölçek

Kaydırıcılar aracılığıyla sayısal bir değer seçmek için widget'ı ölçekleyin.

Bazı mega widget'lar kullanılarak basit bir Tk örneği aşağıda gösterilmiştir.

#!/usr/bin/wish

ttk::treeview .tree -columns "Creator Year" -displaycolumns "Year Creator" 
.tree heading Creator -text "Creator" -anchor center
.tree heading Year -text "Year" -anchor center
pack .tree
.tree insert {} end -id Languages -text "Languages"
.tree insert Languages end -text C -values [list "Dennis Ritchie" "1990"]
proc scaleMe {mywidget scaleValue} {
	$mywidget configure -length $scaleValue
} 
pack [scale .s2  -from 100.0 -to 200.0 -length 100 -background yellow -borderwidth 5
   -font{Helvetica -18 bold} -foreground red -width 40 -relief ridge -orien horizontal
   -variable a -command "scaleMe .s2" ]
pack [ttk::progressbar .p1 -orient horizontal -length 200 -mode indeterminate -value 90]
pack [ttk::progressbar .p2 -orient horizontal -length 200 -mode determinate -variable a
   -maximum 75 -value 20]

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Metnin görüntülenmesini destekleyen bir dizi pencere öğesi vardır. Bunların çoğu, yazı tipi özelliği seçeneği sağlar. Yazı tipi oluşturmanın sözdizimi aşağıda gösterilmiştir -

font create fontName options

Seçenekler

Yazı tipi oluşturmak için mevcut seçenekler aşağıdaki tabloda listelenmiştir -

Sr.No. Sözdizimi ve Açıklama
1

-family familyName

Yazı tipi ailesinin adı.

2

-size number

Yazı tipi boyutu.

3

-weight level

Yazı tipi ağırlığı.

Yazı tipi oluşturmanın basit bir örneği aşağıda gösterilmiştir -

#!/usr/bin/wish

font create myFont -family Helvetica -size 18 -weight bold 
pack [label .myLabel -font myFont -text "Hello World"]

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Mevcut tüm yazı tiplerini almak için aşağıdaki komutu kullanabiliriz -

#!/usr/bin/wish

puts [font families]

Yukarıdaki komutu çalıştırdığımızda aşağıdaki çıktıyı alacağız -

{Abadi MT Condensed Extra Bold} {Abadi MT Condensed Light} {Al Bayan} {Al Nile}
{Al Tarikh} {American Typewriter} {Andale Mono} Arial {Arial Black}
{Arial Hebrew} {Arial Narrow} {Arial Rounded MT Bold} {Arial Unicode MS}
Athelas Avenir {Avenir Next} {Avenir Next Condensed} Ayuthaya Baghdad {Bangla MN}
{Bangla Sangam MN} {Baoli SC} Baskerville {Baskerville Old Face} Batang {Bauhaus 93}
Beirut {Bell MT} {Bernard MT Condensed} BiauKai {Big Caslon} {Book Antiqua}
{Bookman Old Style} {Bookshelf Symbol 7} Braggadocio {Britannic Bold} {Brush Script MT}
Calibri {Calisto MT} Cambria {Cambria Math} Candara Century {Century Gothic}
{Century Schoolbook} Chalkboard {Chalkboard SE} Chalkduster {Charcoal CY} Charter
Cochin {Colonna MT} {Comic Sans MS} Consolas Constantia {Cooper Black} Copperplate
{Copperplate Gothic Bold} {Copperplate Gothic Light} Corbel {Corsiva Hebrew} Courier
{Courier New} {Curlz MT} Damascus {DecoType Naskh} Desdemona {Devanagari MT}
{Devanagari Sangam MN} Didot {DIN Alternate} {DIN Condensed} {Diwan Kufi} {Diwan Thuluth}
{Edwardian Script ITC} {Engravers MT} {Euphemia UCAS} Eurostile Farah Farisi
{Footlight MT Light} {Franklin Gothic Book} {Franklin Gothic Medium}
Futura Gabriola Garamond {GB18030 Bitmap} {Geeza Pro} Geneva {Geneva CY}
Georgia {Gill Sans} {Gill Sans MT} {Gloucester MT Extra Condensed}
{Goudy Old Style} {Gujarati MT} {Gujarati Sangam MN} Gulim GungSeo {Gurmukhi MN}
{Gurmukhi MT} {Gurmukhi Sangam MN} Haettenschweiler {Hannotate SC} {Hannotate TC}
{HanziPen SC} {HanziPen TC} Harrington HeadLineA Hei {Heiti SC} {Heiti TC}
Helvetica {Helvetica CY} {Helvetica Neue} Herculanum {Hiragino Kaku Gothic Pro}
{Hiragino Kaku Gothic ProN} {Hiragino Kaku Gothic Std} {Hiragino Kaku Gothic StdN}
{Hiragino Maru Gothic Pro} {Hiragino Maru Gothic ProN}
{Hiragino Mincho Pro} {Hiragino Mincho ProN} {Hiragino Sans GB}
{Hoefler Text} Impact {Imprint MT Shadow} InaiMathi {Iowan Old Style} Kai Kailasa
{Kaiti SC} {Kaiti TC} {Kannada MN} {Kannada Sangam MN} Kefa {Khmer MN} {Khmer Sangam MN}
{Kino MT} Kokonor Krungthep KufiStandardGK {Lantinghei SC} {Lantinghei TC} {Lao MN}
{Lao Sangam MN} {Libian SC} {LiHei Pro} {LiSong Pro} {Lucida Blackletter} {Lucida Bright}
{Lucida Calligraphy} {Lucida Console} {Lucida Fax} {Lucida Grande} {Lucida Handwriting}
{Lucida Sans} {Lucida Sans Typewriter} {Lucida Sans Unicode} {Malayalam MN}
{Malayalam Sangam MN} Marion {Marker Felt} Marlett {Matura MT Script Capitals}
Meiryo Menlo {Microsoft Sans Serif} Mishafi Mistral {Modern No. 20} Monaco {MS Gothic}
{MS Mincho} {MS PGothic} {MS PMincho} {MS Reference Sans Serif} {MS Reference Specialty}
Mshtakan {MT Extra} Muna {Myanmar MN} {Myanmar Sangam MN} Nadeem {Nanum Brush Script}
{Nanum Gothic} {Nanum Myeongjo} {Nanum Pen Script} {New Peninim MT} {News Gothic MT}
Noteworthy Onyx Optima {Oriya MN} {Oriya Sangam MN} Osaka Palatino {Palatino Linotype}
Papyrus PCMyungjo Perpetua {Perpetua Titling MT} PilGi {Plantagenet Cherokee}
Playbill PMingLiU {PT Mono} {PT Sans} {PT Sans Caption} {PT Sans Narrow} {PT Serif}
{PT Serif Caption} Raanana Rockwell {Rockwell Extra Bold} Sana Sathu {Savoye LET}
Seravek Silom SimSun {Sinhala MN} {Sinhala Sangam MN} Skia {Snell Roundhand} {Songti SC}
{Songti TC} Stencil STFangsong STHeiti STIXGeneral STIXIntegralsD STIXIntegralsSm
STIXIntegralsUp STIXIntegralsUpD STIXIntegralsUpSm STIXNonUnicode STIXSizeFiveSym
STIXSizeFourSym STIXSizeOneSym STIXSizeThreeSym STIXSizeTwoSym STIXVariants STKaiti
STSong Superclarendon Symbol Tahoma {Tamil MN} {Tamil Sangam MN} TeamViewer8 {Telugu MN}
{Telugu Sangam MN} Thonburi Times {Times New Roman} {Trebuchet MS} {Tw Cen MT} Verdana
Waseem {Wawati SC} {Wawati TC} Webdings {Weibei SC} {Weibei TC} {Wide Latin} Wingdings
{Wingdings 2} {Wingdings 3} {Xingkai SC} {Yuanti SC} YuGothic YuMincho {Yuppy SC}
{Yuppy TC} {Zapf Dingbats} Zapfino {Apple Braille} {Apple Chancery} {Apple Color Emoji}
{Apple LiGothic} {Apple LiSung} {Apple SD Gothic Neo} {Apple Symbols}
AppleGothic AppleMyungjo {Monotype Corsiva} {Monotype Sorts}

Görüntü gereci, görüntüleri oluşturmak ve işlemek için kullanılır. Görüntü oluşturmanın sözdizimi aşağıdaki gibidir -

image create type name options

Yukarıdaki sözdiziminde, tür fotoğraf veya bit eşlemdir ve ad, görüntü tanımlayıcıdır.

Seçenekler

Görüntü oluşturma için mevcut seçenekler aşağıdaki tabloda listelenmiştir -

Sr.No. Sözdizimi ve Açıklama
1

-file fileName

Görüntü dosyası adının adı.

2

-height number

Widget için yüksekliği ayarlamak için kullanılır.

3

-width number

Widget için genişliğini ayarlar.

4

-data string

Temel 64 kodlanmış dizedeki görüntü.

Resim widget'ı için basit bir örnek aşağıda gösterilmiştir -

#!/usr/bin/wish

image create photo imgobj -file "/Users/rajkumar/Desktop/F Drive/pictur/vb/Forests/
   680049.png" -width 400 -height 400 
pack [label .myLabel]
.myLabel configure -image imgobj

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Görüntü için mevcut işlev aşağıdaki tabloda listelenmiştir -

Sr.No. Sözdizimi ve Açıklama
1

image delete imageName

Görüntüyü bellekten ve ilgili widget'lardan görsel olarak siler.

2

image height imageName

Resmin yüksekliğini döndürür.

3

image width imageName

Resmin genişliğini döndürür.

4

image type imageName

Görüntünün türünü döndürür.

5

image names

Bellekte canlı görüntülerin listesini döndürür.

Yukarıdaki resim widget komutlarını kullanmanın basit bir örneği aşağıda gösterilmiştir -

#!/usr/bin/wish

image create photo imgobj -file "/Users/rajkumar/images/680049.png"
   -width 400 -height 400 
pack [label .myLabel]
.myLabel configure -image imgobj
puts [image height imgobj]
puts [image width imgobj]
puts [image type imgobj]
puts [image names]
image delete imgobj

Görüntü görsel olarak ve "image delete imgobj" komutu çalıştırıldığında bellekten silinecektir. Konsolda çıktı aşağıdaki gibi olacaktır -

400
400
photo
imgobj ::tk::icons::information ::tk::icons::error ::tk::icons::
warning ::tk::icons::question

Olaylar en basit haliyle komutlar yardımıyla işlenir. Olay işleme için basit bir örnek, düğmeli olay işlemedir ve aşağıda gösterilmiştir -

#!/usr/bin/wish

proc myEvent { } {
   puts "Event triggered"
}
pack [button .myButton1  -text "Button 1"   -command myEvent]

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Gecikme metin animasyonu olayını gösteren basit bir program aşağıda gösterilmiştir -

#!/usr/bin/wish

proc delay {} {
   for {set j 0} {$j < 100000} {incr j} {} 
}

label .myLabel -text "Hello................" -width 25
pack .myLabel
set str "Hello................"
for {set i [string length $str]} {$i > -2} {set i [expr $i-1]} { .myLabel configure -text [string range $str 0 $i]
   update
   delay
}

Programı çalıştırdığımızda, aşağıdaki çıktıyı animasyonlu bir şekilde alacağız -

Gecikme sonrası olay

Gecikmeden sonraki olay sözdizimi aşağıda gösterilmiştir -

after milliseconds number command

Gecikme olayından sonra gösterilecek basit bir program aşağıda gösterilmiştir -

#!/usr/bin/wish

proc addText {} {
   label .myLabel -text "Hello................" -width 25
   pack .myLabel
}
after 1000 addText

Programı çalıştırdığımızda, bir saniye sonra aşağıdaki çıktıyı alacağız -

Aşağıda gösterildiği gibi iptal sonrası komutunu kullanarak bir olayı iptal edebilirsiniz -

#!/usr/bin/wish

proc addText {} {
   label .myLabel -text "Hello................" -width 25
   pack .myLabel
}
after 1000 addText
after cancel addText

Olay Bağlama

Olay bağlamanın sözdizimi aşağıda gösterildiği gibidir -

bind arguments

Klavye Olayları Örneği

#!/usr/bin/wish

bind .  {puts "Key Pressed: %K "}

Programı çalıştırdığımızda ve bir X harfine bastığımızda, aşağıdaki çıktıyı alacağız -

Key Pressed: X

Fare Olayları Örneği

#!/usr/bin/wish

bind .  {puts "Button %b Pressed : %x %y "}

Programı çalıştırdığımızda ve farenin sol tuşuna bastığımızda, aşağıdakine benzer bir çıktı alacağız -

Button 1 Pressed : 89 90

Düğme Örneğiyle Olayları Bağlama

#!/usr/bin/wish

proc myEvent { } {
   puts "Event triggered"
}
pack [button .myButton1  -text "Button 1"   -command myEvent]
bind .  ".myButton1 invoke"

Programı çalıştırıp enter tuşuna bastığımızda aşağıdaki çıktıyı alacağız -

Event triggered

Pencere yöneticisi, üst düzey pencereyi işlemek için kullanılır. Pencerenin boyutunu, konumunu ve diğer özelliklerini kontrol etmeye yardımcı olur. Tk olarak. ana pencereye başvurmak için kullanılır. Pencere komutunun sözdizimi aşağıda gösterilmiştir -

wm option window arguments

Tk wm komutu için mevcut seçeneklerin listesi aşağıdaki tabloda gösterilmektedir -

Sr.No. Sözdizimi ve Açıklama
1

aspect windowName a b c d

Genişlik / yükseklik oranını a / b ve c / d arasında tutmaya çalışır.

2

geometry windowName geometryParams

Pencere için geometri ayarlamak için kullanın.

3

grid windowName w h dx dy

Izgara boyutunu ayarlar.

4

group windowName leaderName

leaderName, bir grup ilgili pencerenin liderini verir.

5

deiconify windowName

Küçültülmüşse ekranı normale getirir.

6

iconify windowName

Pencereyi küçültür.

7

state windowName

Pencerenin mevcut durumunu döndürür.

8

withdraw windowName

Pencerenin haritasını kaldırır ve ayrıntılarını bellekten kaldırır.

9

iconbitmap windowName image

Simge bit eşlemini ayarlar veya döndürür.

10

iconPhoto windowName image

Simge fotoğrafını ayarlar veya döndürür.

11

command windowName commandString

Başlangıç ​​komutunu WM_COMMAND özelliğine kaydeder.

12

protocol windowName arguments

WM_DELETE_WINDOW olabilen protokol istek adını işlemek için bir komut kaydedin,

WM_SAVE_KENDİNİZ,

WM_TAKE_FOCUS. Örneğin: wm protokolü.

WM_DELETE_WINDOW Çıkın.

13

minsize windowName size

Minimum pencere boyutunu belirler.

14

maxsize windowName size

Maksimum pencere boyutunu belirler.

15

title windowName titleText

Pencerenin başlığını belirler.

16

attributes subOptions

Alfa, tam ekran ve benzeri gibi pek çok özellik mevcuttur.

Yukarıdaki komutlardan bazıları aşağıdaki örnekte kullanılmıştır -

#!/usr/bin/wish

wm maxsize . 800 800
wm minsize . 300 300
wm title . "Hello"
wm attributes . -alpha ".90" 
wm geometry . 300x200+100+100

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Gördüğünüz gibi alfa, mevcut özelliklerden biridir. Yaygın olarak kullanılan alt komutların listesi aşağıda listelenmiştir -

Sr.No. Sözdizimi ve Açıklama
1

-alpha number

Alfayı pencere için ayarlar.

2

-fullscreen number

Sayı, normal ekran için 0 veya tam ekran için 1 olabilir.

3

-topmost number

Pencerenin en üstte olup olmayacağını ayarlar veya döndürür. Değer 0 veya 1 olabilir.

Pencere Oluşturuluyor

Pencere oluşturmak için üst düzey komutunu kullanabiliriz ve aşağıda bir örnek gösterilmiştir -

#!/usr/bin/wish

toplevel .t

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Yıkılan Pencere

Pencereyi yok etmek için destroy komutunu kullanabiliriz ve aşağıda bir örnek gösterilmektedir -

#!/usr/bin/wish

destroy .t

Yukarıdaki komut adlı pencereyi yok edecek .t.

Geometri yöneticisi, pencerenin ve diğer çerçevelerin geometrisini yönetmek için kullanılır. Pencerenin ve çerçevelerin konumunu ve boyutunu işlemek için kullanabiliriz. Düzen widget'ları bu amaçla kullanılmaktadır.

Konumlandırma ve boyutlandırma

Konumlandırma ve boyutlandırma penceresi için sözdizimi aşağıda gösterilmiştir -

wm geometry . wxh+/-x+/-y

Burada w genişliği ve h yüksekliği belirtir. Ardından, ekrandaki x konumuna atıfta bulunan numara ile '+' veya '-' işareti gelir. Benzer şekilde aşağıdaki sayı ile birlikte '+' veya '-' işareti ekrandaki y konumunu ifade eder

Yukarıdaki Bildirim için basit bir örnek aşağıda gösterilmiştir -.

#!/usr/bin/wish

wm geometry . 300x200+100+100

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -

Izgara Geometrisi

Izgara geometrisinin sözdizimi aşağıda gösterilmiştir -

grid gridName -column number -row number -columnspan number -rowspan number

Sütun, sıra, sütun genişliği veya satır aralığı, ızgara geometrisinin sağlanmasına yardımcı olur.

Yukarıdaki ifade için aşağıda basit bir örnek gösterilmektedir -

#!/usr/bin/wish

frame .myFrame1 -background red  -height 100 -width 100
frame .myFrame2 -background blue -height 100 -width 50
grid .myFrame1 -columnspan 10 -rowspan 10 -sticky w
grid .myFrame2 -column 10 -row 2

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alacağız -