İçeriğe atla

Tk (yazılım)

Tk
Tcl logo
Tk 8.6.6 on Windows 10
Orijinal yazar(lar)John Ousterhout
Geliştirici(ler)Tcl Core Team[1]
İlk yayınlanma1991 (33 yıl önce) (1991)
Güncel sürüm9.0.0[2] Bunu Vikiveri'de düzenleyin / 26 Eylül 2024
Programlama diliC
İşletim sistemiCross-platform
PlatformCross-platform
TürWidget toolkit
LisansBSD-style[3]
Resmî sitesitcl.tk
Kod deposu Bunu Vikiveri'de düzenleyin

Tk, birçok programlama dilinde bir grafik kullanıcı arabirimi (GUI) oluşturmak için GUI widget'larının temel öğelerinden oluşan bir kitaplık sağlayan ücretsiz ve açık kaynaklı, çapraz platform bir widget araç takımıdır .

Tk, düğme, menü, tuval, metin, çerçeve, etiket vb. gibi masaüstü uygulamaları geliştirmek için yaygın olarak ihtiyaç duyulan bir dizi widget sağlar. Tk, Linux, Mac OS, Unix ve Microsoft Windows'un çoğu çeşidinde çalışacak şekilde taşınmıştır. Tcl gibi, Tk da Temel Çok Dilli Düzlem(Basic Multilingual Plane) içinde Unicode'u destekler, ancak henüz mevcut genişletilmiş tam Unicode'u (örneğin, Tk'nin desteklediği UCS-2'den UTF-16) işlemek için genişletilmemiştir.

Tk genişletilmek üzere tasarlanmıştır ve yeni widget'lar veya başka yetenekler sunan çok çeşitli uzantılar mevcuttur.[4][5]

Tcl/Tk 8'den beri, "doğal görünüm ve his" sunar (örneğin, menüler ve düğmeler, herhangi bir platform için "yerel" yazılım tarzında görüntülenir).[6] Sürüm 8.5'in öne çıkan özellikleri arasında, orijinal olarak Tk Tile[7] adlı yeni bir tema motoru yer alıyor, ancak şimdi genellikle "temalı Tk" olarak anılıyor ve ayrıca geliştirilmiş yazı tipi oluşturma.[8] 8.6 sürümünün öne çıkan özellikleri arasında PNG desteği ve açılı metin bulunur.[9]

Tarih

Tk, John Ousterhout tarafından Tcl betik dilinin bir uzantısı olarak geliştirilmiştir. İlk olarak 1991'de halka açıldı.[10] Tk versiyonlama, versiyon 8.0'a kadar Tcl'den ayrı olarak yapıldı.

Tk orijinal olarak Unix/X11 için yazılmıştır ve Motif ve zamanın diğer X11 araç takımlarından daha kolay öğrenilmesi ve kullanılması nedeniyle 1990'larda programcılar arasında son derece popüler olduğunu kanıtlamıştır.[11] Tk ayrıca Microsoft Windows ve Macintosh platformlarına taşındı, Tk 4.2'den başlayarak ve Tk 8.0'da yerel görünüm ve hisle geliştirildi (1997'de yayınlandı). 1990'larda Tk'nin popülaritesini ve önemini belirtmek için Ousterhout'a 1997'de Tcl/Tk için ACM Yazılım Sistemi Ödülü verildi:[12]

ACM Software System Award Winner: John K Ousterhout
For the Tcl scripting language which allows developers to create complex systems from pre-existing components. The embedded Tk provides a simple mechanism for creating graphical user interfaces. Together they make a powerful addition to the software repertoire.

Tk'ye olan ilgi 1990'ların sonlarından itibaren önemli ölçüde azaldı. Motif'in FLTK, Qt ve GTK gibi araç takımları ile değiştirilmesine rağmen, Unix'teki varsayılan görünüm ve his hala Motif'i taklit ediyor.[13] Uygulamalarda (örneğin ağaçlar, birleşik giriş kutuları, sekmeli defterler) yaygın olarak kullanılan widget'lar Tk çekirdeğinde mevcut değildi, ancak yalnızca birden çok, genellikle rekabet eden eklentiler aracılığıyla mevcuttu.[14]

2007'nin sonlarında piyasaya sürülen Tk 8.5, çekirdeğe eksik widget'lar ekleyerek, yeni bir tema motoru sunarak ve Unix'teki görünüm ve hissi modernleştirerek bu sorunların bazılarını düzeltti.[8] Bununla birlikte, bu gelişmeleri dahil etmek için bazı kod değişiklikleri gerektiğinden, mevcut birçok uygulama, Tk'nin bilindiği Motif'ten ilham alan eski hissi koruyor.[15]

Mimari

Tk, Tcl için geliştirilmiş, platformdan bağımsız bir GUI iskeletidir . Bir Tcl kabuğundan (tclsh), Tk, package require Tk kullanılarak çağrılabilir. wish programı (Windowing Shell), Tk sağlamanın yanı sıra grafiksel bir pencerede bir tclsh kabuğunu çalıştırmanın bir yolunu sağlar.[16]

Tk aşağıdaki özelliklere sahiptir:

  • Platformdan bağımsız : Tcl gibi Tk yorumlanır. Birden fazla platforma taşındı ve değişiklik yapmadan hepsinde kolayca çalıştırılabilir.[17]
  • Özelleştirilebilir : Tk'deki bir parçacığın hemen hemen tüm özellikleri, parçacığın oluşturulması sırasındaki seçeneklerle veya daha sonra yapılandır komutuyla özelleştirilebilir.[18]
  • Yapılandırılabilir : Seçeneklerin çoğu bir seçenek veritabanında saklanabilir, bu da bir uygulamanın görünümünü (renk şeması gibi) parametreleştirmeyi çok kolaylaştırır. Bu aynı zamanda uygulamaya özel seçeneklerin saklanmasının yalnızca seçenek ekleme komutlarını kaydetme ve uygulamayı yüklerken bunları yürütme meselesi olduğu anlamına gelir.[19]

Dil bağlamaları

Bir programlama dilinde yazılmış bir kitaplık, bağlamalar yazılırsa başka bir dilde kullanılabilir; Tk, Tcl dili ile entegredir. Diğer çeşitli dillerde, kısmi bir listesi Tk web sitesinde bulunan Tk için bağlamalar vardır.[20] Ada (TASH olarak adlandırılır),[21] Haskell (HTk olarak adlandırılır),[22] Perl, Python (Tkinter olarak adlandırılır), Ruby, Rexx ve Common Lisp dahil olmak üzere listelenmeyen ek diller için bağlamalar mevcuttur.

Perl'den Tk kullanmanın birkaç yolu vardır: her ikisi de Tk'ye erişmek için bir köprü olarak Tcl'yi kullanan Tcl::Tk ve Tkx Perl modülleri[23] ve Tk'ye yerel Perl erişimi sağlayan Perl/Tk[24] yapılar. Python bağlaması, Tcl'yi Tk'ye köprü olarak kullanır.[25]

Özellikler

Tk çeşitli widget'lar sağlar.[26] Temel widget'lar, genellikle işletim sistemi tarafından ekranda hareket ettirilebilen kayan pencerelerde barındırılan toplevel widget'lara gömülüdür.[27]

Temel widget'lar

* button
  • canvas
  • checkbutton
  • combobox
  • entry
  • frame
  • label
  • labelframe
  • listbox
  • menu
  • menubutton
  • message
  • notebook
  • panedwindow
  • progressbar
  • radiobutton
  • scale
  • scrollbar
  • separator
  • sizegrip
  • spinbox
  • text
  • tk_optionMenu
  • treeview

Üst düzey widget'lar

  • tk_chooseColor – kullanıcının bir renk seçmesi için bir iletişim kutusu açar.
  • tk_chooseDirectory – kullanıcının bir dizin seçmesi için bir iletişim kutusu açar.
  • tk_dialog – kalıcı bir iletişim kutusu oluşturur ve yanıt bekler.
  • tk_getOpenFile – kullanıcının açacağı dosyayı seçmesi için bir iletişim kutusu açar.
  • tk_getSaveFile – kullanıcının kaydedilecek dosyayı seçmesi için bir iletişim kutusu açar.
  • tk_messageBox - bir mesaj penceresi açar ve bir kullanıcı yanıtı bekler.
  • tk_popup – bir açılır menü gönderir.
  • toplevel - üst düzey widget'ları oluşturur ve yönetir.

Geometri yöneticileri

Temel widget'lar, geometri yöneticileri kullanılarak toplevel pencerelerde düzenlenir:[28]

  • place – widget'ları mutlak konumlara konumlandırır
  • grid - bir ızgarada widget'ları düzenler
  • pack - widget'ları bir boşluğa paketler

Ayrıca bakınız

Kaynakça

  1. ^ "Tcl/Tk Core Development". Tcl Developer Xchange. 30 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  2. ^ "[TCLCORE] Tk 9.0.0 RELEASED". 
  3. ^ "Tcl/Tk Licensing Terms". Tcl Developer Xchange. 27 Haziran 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Kasım 2016. 
  4. ^ Writing a Tk Widget in C, Chapter 46 in Practical Programming in Tcl and Tk, 0-13-038560-3
  5. ^ "Extensions for Tcl and Tk". Tcler's Wiki. 30 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  6. ^ "Tcl/Tk 8.0". Tcl Developer Xchange. 18 Eylül 2013. 14 Temmuz 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2014. 
  7. ^ "Tile: an improved themeing engine for Tk". SourceForge. 8 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Kasım 2016. 
  8. ^ a b "Tcl/Tk 8.5 Release Announcement". Tcl Developer Xchange. 18 Eylül 2013. 18 Haziran 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2014. 
  9. ^ "Tcl/Tk 8.6 Release Announcement". Tcl Developer Xchange. 20 Eylül 2013. 27 Haziran 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2014. 
  10. ^ "History of Tcl". Tcl Developer Exchange. 10 Haziran 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Nisan 2010.  Yazar |ad1= eksik |soyadı1= (yardım)
  11. ^ "Tk Backgrounder". TkDocs. 6 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Kasım 2016. 
  12. ^ "John K Ousterhout - Award Winner". ACM Awards. 3 Ocak 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Kasım 2016. 
  13. ^ "TIP #48: Tk Widget Styling Support". Tcl Developer Xchange. 4 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  14. ^ "treeview". Tcler's Wiki. 14 Haziran 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  15. ^ "TIP #319: Implement Backwards Compatibility for ttk Themed Widgets in tk Widgets". Tcl Developer Xchange. 30 Haziran 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  16. ^ "wish manual page - Tk Applications". Tcl Developer Xchange. 9 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  17. ^ "How to Compile Tcl". Tcl Developer Xchange. 21 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  18. ^ "ttk::widget manual page - Tk Themed Widget". Tcl Developer Xchange. 9 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  19. ^ "option manual page - Built-In Commands". Tcl Developer Xchange. 9 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  20. ^ "Languages with a Tk binding". Tcler's Wiki. 6 Temmuz 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2014. 
  21. ^ "TASH". SourceForge. 12 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Temmuz 2014. 
  22. ^ "HTk home". Informatik - FB3 - Uni Bremen. 18 Ekim 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Kasım 2016. 
  23. ^ "Tkx::Tutorial - How to use Tkx". ActiveState Docs. 10 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  24. ^ Perl/Tk Concepts, Chapter 1 in Mastering Perl/Tk, 978-1565927162
  25. ^ Tkinter, Chapter 2.4 in Modern Tkinter for Busy Python Developers, ASIN B0071QDNLO
  26. ^ "Tk Commands, version 8.6.6". Tcl Developer Xchange. 18 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Kasım 2016. 
  27. ^ Widgets', Chapter 17.2 in Tcl and the Tk Toolkit , 978-0321336330
  28. ^ Geometry Managers', Chapter 17.6 in Tcl and the Tk Toolkit , 978-0321336330

Konuyla ilgili yayınlar

Dış bağlantılar

Vikikitap
Vikikitap
Vikikitapta bu konu hakkında daha fazla bilgi var:

Şablon:Widget toolkits

İlgili Araştırma Makaleleri

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

Berkeley r-komutları, bir Unix sisteminin kullanıcılarının TCP/IP bilgisayar ağı üzerinden başka bir Unix bilgisayarında oturum açmasını veya komutlar vermesini sağlamak için tasarlanmış bir bilgisayar programları paketidir. Berkeley r-komutları, 1982'de Berkeley'deki Kaliforniya Üniversitesi'ndeki Computer Systems Research Group (CSRG) tarafından, TCP/IP'nin erken uygulanmasına dayanarak geliştirildi.

Ruby, nesneye yönelik, dinamik, reflektif ve esnek bir programlama dilidir. Ruby dili, Yukihiro Matsumoto tarafından Japonya'da tasarlanmaya ve geliştirilmeye başlanmıştır.

<span class="mw-page-title-main">SQLite</span>

SQLite, dünyada en çok dağıtılan ve tavsiye edilen kaynak kodları halka açık, tamamen C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve yapılandırma gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veritabanı motorudur.

<span class="mw-page-title-main">Go (programlama dili)</span> programlama dili

Go, statik tipli, derlenen, yüksek seviyeli bir programlama dilidir. Robert Griesemer, Rob Pike ve Ken Thompson tarafından Google'da 2007 yılından itibaren geliştirilmeye başlanmıştır. Sözdizimi C'ye benzerdir fakat hafıza erişimi güvenlidir, kullanılmayan hafıza kaynakları sisteme otomatik olarak geri verilir, interface veri tipleri sayesinde yapısal tip sistemini destekler ve eşzamanlı (concurrent) çalışan işlemlerin (process) ortak hafıza kullanabilmelerinin yanında birbiriyle iletişim kurmalarını sağlayan ögelere sahiptir. Eski alan adı golang.org olduğundan sık sık golang ismiyle anılır ama asıl adı Go'dur.

Swift, Apple tarafından iOS ve macOS platformlarına iOS ve Mac uygulamaları geliştirmek için oluşturulan, derlenerek çalışan güçlü ve kullanımı kolay, nesne yönelimli bir programlama dili.

<span class="mw-page-title-main">Rust (programlama dili)</span> sistem programlama dili

Rust; açık kaynak kodlu, çoklu paradigmalı, ilk olarak Mozilla tarafından dizayn edilen ve Rust Foundation tarafından geliştirilmekte olan; performansa, güvenliğe ve eş zamanlı işlem yapabilmeye odaklanmış bir sistem programlama dilidir. Rust, söz dizimi olarak C++ diline benzemektedir. Rust, "güvenli, pratik ve hızlı" bir dil ortaya koymak amacı ile tasarlanmıştır.

AI Challenge bir uluslararası yapay zeka programlama yarışmasıdır. Waterloo Üniversitesi Bilgisayar Bilimi Kulübü tarafından düzenlenmiştir.

<span class="mw-page-title-main">ImageMagick</span>

ImageMagick, ücretsiz ve açık kaynak resim işleme yazılımıdır. 200'den fazla resim formatı üzerinde okuma ve yazma yapabilmektedir. ImageMagick, Apache 2.0 lisansı altındadır.

Bilgisayar bilimi ve bilgisayar programlamasında sistem zamanı, bir bilgisayar sisteminin zaman geçişi kavramını temsil eder. Bu anlamda, zaman, takvim üzerinde gün geçişi de içerir.

Python for S60' PyS60 olarak da adlandırılan, Nokia'nın, orijinal Python 2.2.2'den S60 yazılım platformunda genel Python programlama dilinin limanıydı. 11 Şubat 2010'da yayınlanan en son son sürüm olan PyS60-2.0.0, python çekirdeğini 2.5.4 sürümüne güncelledi.

ABC, Leo Geurts, Lambert Meertens ve Steven Pemberton tarafından CWI, Hollanda'da geliştirilen zorunlu bir genel amaçlı programlama dili ve programlama ortamıdır. Etkileşimli, yapılandırılmış, üst düzeydir ve BASIC, Pascal veya AWK yerine kullanılması amaçlanmıştır. Bir sistem programlama dili olmaktan ziyade, öğretme veya prototip oluşturma amaçlıdır.

Bilgi işlemde gettext, Unix benzeri bilgisayar işletim sistemlerinde çok dilli programlar yazmak için yaygın olarak kullanılan bir uluslararasılaştırma ve yerelleştirme sistemidir. Gettext'in temel faydalarından biri, programlamayı çevirmekten ayırmasıdır. Gettext'in en sık kullanılan uygulaması, 1995 yılında GNU Projesi tarafından yayınlanan GNU gettext'idir .Çalışma zamanı kitaplığı libintl'dir. Gettext, çok sayıda isim türü için farklı dizeler kullanma seçeneği sunar, ancak dilbilgisel cinsiyet için desteği yoktur.

<span class="mw-page-title-main">Pyqt</span>

PyQt, bir Python eklentisi olarak uygulanan, platformlar arası GUI araç seti Qt'nin bir Python bağlantısıdır.

Microsoft Windows uygulama programlamasında, OLE Otomasyonu, Microsoft tarafından oluşturulan süreçler arası bir iletişim mekanizmasıdır. Başlangıçta Visual Basic olan komut dosyası dilleri tarafından kullanılması amaçlanan Bileşen Nesne Modeli'nin (COM) bir alt kümesine dayanmaktadır, ancak şimdi Windows'ta birkaç dil tarafından kullanılmaktadır. IDispatch arabirimini uygulamak için tüm otomasyon nesneleri gereklidir. Otomasyon denetleyicileri adı verilen uygulamaların, diğer uygulamalar tarafından dışa aktarılan paylaşılan otomasyon nesnelerine erişebildiği ve bunları değiştirebildiği bir altyapı sağlamaktadır. Uygulamaların birbirini kontrol etmesi için daha eski bir mekanizma olan Dinamik Veri Değişimi'nin (DDE) yerini almaktadır. DDE'de olduğu gibi, OLE Otomasyonunda otomasyon denetleyicisi "istemci"dir ve otomasyon nesnelerini dışa aktaran uygulama "sunucu"dur.

<span class="mw-page-title-main">Unix shell</span> Unix işletim sistemi için yorumlayıcı program

Unix shell, Unix benzeri işletim sistemleri için bir komut satırı kullanıcı arabirimi sağlayan bir komut satırı yorumlayıcısı veya kabuğudur. Kabuk, hem etkileşimli bir komut dili hem de bir komut dosyası dilidir ve işletim sistemi tarafından sistemin kabuk komut dosyalarını kullanarak yürütülmesini kontrol etmek için kullanılır.

wish, X Pencere Sistemini destekleyen Unix benzeri işletim sistemlerinin yanı sıra macOS, Microsoft Windows, ve Android için kullanılabilen, Tk komutlarıyla genişletilmiş bir Tcl yorumlayıcısıdır. Geliştiricilere, Tk araç setini ve Tcl programlama dilini kullanarak GUI widget'ları oluşturma imkanı sağlar.

<span class="mw-page-title-main">Allison Randal</span> Amerikalı yazar

Allison Randal, yazılım geliştiricisi, açık kaynak stratejisti ve yazardır. Parrot virtual machine şirketinin baş mimarı, Perl Vakfı'nın yönetim kurulu üyesi, 2010'dan 2012'ye kadar Python Yazılım Vakfı'nın yöneticisi ve Parrot Vakfı'nın başkanıydı. Ayrıca, Perl 1'den Parrot'a bağlantı noktası olan, Punie'nin baş geliştiricisidir.Perl 6 ve Parrot Essentials 25 Ekim 2010 tarihinde Wayback Machine sitesinde arşivlendi., Perl 6: podstawy, Parrot Developer's Guide: Pir ve Parrot Developer's Guide: Pir kitaplarının ortak yazarıdır. Ağustos 2010'dan Şubat 2012'ye kadar O'Reilly Media'da çalıştı. Ayrıca Randal, Canonical'da Ubuntu'nun Teknik Mimarıydı.

<span class="mw-page-title-main">Cloud9 IDE</span>

Cloud9 IDE, sürüm 2.0'dan sürüm 3.0'a kadar açık kaynak olarak yayınlanan bir Çevrimiçi IDE'dir. C, C++, PHP, Ruby, Perl, Python, Node.js ile JavaScript ve Go gibi birçok programlama dilini destekler.

ns, bir dizi ayrık olay ağ simülatörleri, özellikle ns-1, ns-2 ve ns-3 için kullanılan bir isimdir. Hepsi, öncelikle araştırma ve öğretimde kullanılan ayrık olay bilgisayar ağı simülatörleridir.