tcl GUI zur Laufzeit verändern

Gast #5939411
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?
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.
Gast
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
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:
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
...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
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
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.