tcl GUI zur Laufzeit verändern

Gast #5939411
Lesenswert?

In einem anderen Beitrag (tcl String Operationen) wurde mit hier bereits 
bestens geholfen.

Nun hänge ich bei folgender Situation:

Eine vorhandene GUI möchte ich nun ein wenig umbauen.
Ich möchte ein Label und Textfeld zur Laufzeit einblenden, wenn der COM 
Port zu einem bestimmten Messgerät erfolgreich geöffnet wurde. Wenn der 
COM Port nicht geöffnet wurde, möchte ich einen Hinweis einblenden.

Bietet tcl hier bereits eine Funktion?
Gast #5939585
Lesenswert?

kenny schrieb:

> Eine vorhandene GUI möchte ich nun ein wenig
> umbauen.

Dumme Frage: Womit ist dieses vorhandene GUI realisiert?
Mit Tk?


> Ich möchte ein Label und Textfeld zur Laufzeit einblenden,
> wenn der COM Port zu einem bestimmten Messgerät erfolgreich
> geöffnet wurde. Wenn der COM Port nicht geöffnet wurde,
> möchte ich einen Hinweis einblenden.

Kein Ding. Machbar.


> Bietet tcl hier bereits eine Funktion?

Tcl nicht direkt; Tk hingegen schon.
Die übliche Methode für Dünnbrettbohrer ist, dem wish ein
tcl-Script zu übergeben; von dort aus hat man Zugriff auf
alle Tk-Widgets.
Gast #5939661
Lesenswert?

Dirk B. schrieb:
> Du musst ja die Widgets anzeigen lassen.
>
> Dafür gibt es verschiedene Funktionen.
> pack, grid, place fallen mir erstmal ein.
>
> Du kannst, je nach Erfolg des Öffnens, an der Stelle die Widgets
> einbauen.
>
> Da gibt es auch Optionen zum löschen.

Genau der richtige Denkanstoß :)

Die GUI selber konnte ich bisher zwar erweitern; aber so ganz verstanden 
hatte ich sie noch nicht.

Ich denke ich weiß nun wo ich die Abfrage einbauen muss (siehe txt 
file).
Angehängte Dateien:
#5939853
Lesenswert?

Du kannst auch das Entry anzeigen lassen und disablen.

Dann kann der Eintrag nicht geändert werden.

Es sollte dann auch hellgrau sein.

Dann sucht der User nicht die Funktion.

Hinweise zum Status kannst du auch im Label(frame) angegeben oder in der 
Variablen zum Entry.
Gast #5939873
Lesenswert?

...schaue dir auch mal die Beschreibungen zu den jeweiligen Widgets mal 
genauer an! Es gibt da einen Befehl configure, mit dem man die 
verschiedensten Eigenschaften zur Laufzeit und während sie angezeigt 
werden, verändern kann. Mit diesem Befehl plus disable, hidden etc. kann 
man recht hübsche und variable GUIs aufbauen.
Moderator Persönliche Seite #5939999
Lesenswert?

Egon D. schrieb:
>> Und wie machen es die Dickbrettbohrer?
>
> Die rufen die Tk-Funktionen aus ihrer C-Anwendung heraus
> auf.

Eigentlich macht man es eher so, dass man nur die laufzeitkritischen 
Funktionen in C implementiert und den Rest als Skript. Da das hier nicht 
laufzeitkritisch ist, spricht wenig für C und ganz viel für Skript.
Skripte kann man zusätzlich zur Laufzeit ändern.

Dünnbrettbohrer sind hier die Schlaueren :-)

@kenny:
Es ist kein Problem, sämtliche Widgets zur Laufzeit zu ändern und aus 
der Oberfläche herauszunehmen. Der jeweilige Geometriemanager (pack, 
grid, place) macht das auch "on the fly".

Damit sich aber nicht alle Widgets verschieben, würde ich den Label etc. 
schon von Anfang an mit leerem Textfeld einbauen:

label .l -text {}

Das wird dann per pack, grid, place eingebaut.

Wenn dann das entsprechende Ereignis eintritt, änderst Du einfach das 
Attribut:

.l config -text {COM1 aktiv}

Es gibt noch viele weitere Möglichkeiten, bspw. die verknüpfung mit 
einer Variablen (Attribut -textvar). Dann ändert sich das Label immer 
dann, wenn sich die Variable ändert.
Gast #5940735
Lesenswert?

Vielen Dank für die vielen guten Anregungen.

Diese werde ich weiter verfolgen, fürs erste habe ich mir mit einem 
weiteren Reiter (Auto meas.) beholfen (siehe Foto).

Ich möchte nun erstmal den Fokus auf die Funktionalität legen, da noch 2 
weitere Geräte eingebunden werden sollen.

Sobald alles stabil läuft, wird die GUI verfeinert.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren