mikrocontroller.net

Forum: PC-Programmierung tcl GUI zur Laufzeit verändern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: kenny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: leo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kenny schrieb:
> Bietet tcl hier bereits eine Funktion?

Ev. verwendest du Tcl/Tk?
Anyway, der 1. Link in Google "tcl gui" passt schon mal.

leo

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Egon D. (egon_d)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Egon D. schrieb:
> Dumme Frage: Womit ist dieses vorhandene GUI realisiert?
> Mit Tk?

Hast du ein Tcl-Script schon mal mit einer anderen GUI gesehen?

Autor: kenny (Gast)
Datum:
Angehängte Dateien:
  • GUI.txt (612 Bytes, 15 Downloads)

Bewertung
0 lesenswert
nicht 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).

Autor: Dumdi D. (dumdidum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Egon D. schrieb:
> Die übliche Methode für Dünnbrettbohrer ist, dem wish ein tcl-Script zu
> übergebe

Und wie machen es die Dickbrettbohrer?

Autor: Egon D. (egon_d)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dumdi D. schrieb:

> Egon D. schrieb:
>> Die übliche Methode für Dünnbrettbohrer ist, dem wish
>> ein tcl-Script zu übergebe
>
> Und wie machen es die Dickbrettbohrer?

Die rufen die Tk-Funktionen aus ihrer C-Anwendung heraus
auf.

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
Autor: 50c (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris D. (myfairtux) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: kenny (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.