Tcl & Tk in OpenSUSE

 

Questo è un excursus e vi rimando su riferimenti più precisi e completi.

 

Tcl (acronimo di Tool Command Language) è un linguaggio ad alto livello, interpretato, multi-OS, mentre TK è una sua implementazione grafica (libreria) per fare le GUI. È integrato in OpenSUSE anche se non tutte le sue librerie.

 

È facile aggiungere propri comandi per estendere il linguaggio Tcl: Si possono scrivere comandi in C o Tcl. È interoperabile con Python e Java.

 

In quanto molto versatile in molti casi può sostituire: Bash (anche Powershell e Dshell), BASIC, Python, Perl, C++, Java, C#, X-Javascript.

 

TK è la libreria grafica di Tcl, che permette le finestre, bottoni, ecc. , insomma fare le interfacce grafiche per il nostro programma o GUI.

 

Curiosità: Il GTK (Graphic Tools Kit) fu inizialmente inventato per estendere le potenzialità della libreria grafica TK.

 

Per eseguire un programma Tcl si può compilare (in realtà compattato e inserito l’interprete) o eseguire interpretato (anche compattato) con il comando wish o come shell (tclsh) ed infine riga comando.

 

Come esempio molto standard, quanto segue è il programma Hello World in Tcl/Tk

File helloword.tcl , eseguito come

 

wish helloword.tcl

 

File ​​ helloword.tcl

 

# Questo è un commento

button .b -text "Hello World" -command exit

pack .b

 

I comandi possono anche essere inseriti in # di script da invocare come script di shell. Per farlo come nell'esempio precedente, si riscriva il programma Hello World come segue:

 

Hello Word

 

#! /usr/bin/wish -f

button .b -text "Hello World" -command exit

pack .b

 

Si inserisca il testo all'interno di un file chiamato Hello e ci si assicuri che wish sia installato in /usr/bin (di sicuro in OpenSUSE, altrimenti sarà necessario cambiare opportunamente il percorso).

 

File helloword.tc

 

#! /usr/bin/wish -f

button .b -text "Hello World" -command exit

pack .b

 

Si vedrà un bottone etichettato Hello World all'interno di una Finestra: cliccandolo la Finestra verrà chiusa.

Si può fare una shell con

 

#!/usr/bin/tclsh

 

Ma è molto più povero, quindi si usa di solito per programmi per sostituire linguaggi di shell.

 

++--

 

Per eseguirlo interattivamente da riga di comando eseguire

 

tclsh

Esistono compattatori e compilatori di terze parti, spesso costosi.

Con Tk è facile fare interfacce.

Esempio:

#!/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"]

grid [button .myButton2 ​​ -text "Button2 exit" -command "exit"]

Fare ​​ Tray Icon con Tcl

Richiede tcl-tktray

 

https://www.ghisler.ch/wiki/index.php/AutoHotkey:_Tray_Icon_for_TC

 

; Start Total Commander with a tray icon.

; It allows the user to Show/Hide TC by clicking on it.

; The script allows more instances of TC running, each having its own tray icon.

 

DetectHiddenWindows On

 

Menu Tray, Icon, %COMMANDER_PATH%\TOTALCMD.EXE

Menu Tray, NoStandard

Menu Tray, Add, Hide, subShowHide

Menu Tray, Default, Hide

Menu Tray, Add

Menu Tray, Add, Exit, subExit

Menu Tray, Click, ClickCount 1

Menu Tray, Tip, Total Commander

OnExit subExit

 

bHidden := False

 

RunWait %COMMANDER_PATH%\TOTALCMD.EXE,,,pidTC

Return

 

subShowHide:

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ if (bHidden)

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ WinActivate ahk_pid %pidTC%

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ WinShow ahk_pid %pidTC%

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ Menu Tray, Rename, Show, Hide

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ Menu Tray, Default, Hide

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ bHidden := False

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ }

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ else

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ {

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ WinHide ahk_pid %pidTC%

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ Menu Tray, Rename, Hide, Show

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ Menu Tray, Default, Show

 ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ bHidden := True

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ }

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ Return

 

subExit:

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ WinClose ahk_pid %pidTC%

 ​​ ​​ ​​ ​​ ​​ ​​ ​​​​ ExitApp

 

 

 

Ciaooooooooooooooooooooooooooooo

 

Precedente Installare lo sfondo animato su OpenSUSE Successivo Enlightenment su OpenSUSE