Ich konvertiere eine alte Tcl/Tk-Anwendung (geschrieben vor 20 Jahren ...) und alle Ratschläge, was zu tun ist und wie es zu tun wäre sehr geschätzt .Hinweise für die Anpassung einer alten Tcl/Tk-Anwendung an moderne Standards
Im Moment könnte ich den Code anpassen und es funktioniert, aber es ist ein bisschen hässlich (das Aussehen & Gefühl ist nicht sehr zufriedenstellend, insbesondere, weil die Anwendung sowohl auf Linux als auch auf MacOS laufen sollte).
Um diesen Punkt zu verbessern, entdeckte ich zwei wichtige Änderungen in Tk: die Einführung von Themen Widgets und der Grid-Geometrie-Manager.
Q1) Von einem strengen Blickwinkel des Look & Feel, ist es eine "gute Idee", zu einem Grid-Ansatz (es ist eine große Arbeit) zu wechseln? Kann ich Grid und Pack mischen (weil für einige dynamische GUI-Teile der Pack-Ansatz einfacher ist)?
Für das Aussehen & fühlen, habe ich versucht, themed Widgets zu verwenden (Ersetzen Etikett nach ttk: Etikett, ...), aber es ist noch nicht zufriedenstellend.
Zum Beispiel hat die Anwendung einen Titelbereich (der abhängig von den ausgewählten Menüoptionen mehrere Titel enthalten kann). Im Grunde habe ich es mit:
ttk::style theme use clam
ttk::frame .c -padding "4"
grid .c -sticky nsew
ttk::label .c.t -relief groove -borderwidth 4 -justify center -text \
"this is a title.\nAnd its subtittle\nHow to increase line spacing ?\nWhat about font size ?"
grid .c.t
Der Titel kann mehrzeilige sein (und kann mit einem .c.t configure -text "new title"
mehrmals geändert werden). Das Ergebnis ist
Q2) Wie kann ich den Raum zwischen zwei Linien zu erhöhen? (und wie kann ich die Schriftgröße erhöhen)?
Q3) Ich sah ein Text-Widget, aber ich konnte keine thematische Version davon finden? Habe ich etwas verpasst?
Vielen Dank
Das Widget 'text' ist sehr komplex und die Art und Weise, wie es angezeigt wird, wird praktisch vollständig durch seinen Inhalt bestimmt. (Das 'canvas' ist ein anderes.) Sie können ein paar Tricks machen, indem Sie es in einen' ttk :: frame' und Konfigurations-Hacker einfügen, damit die Dinge wie ein ttk :: text aussehen ... und das muss viel einfacher sein als die riesige Menge an Arbeit in C, um eine echte zu machen! –
Anstelle von 'listbox' kann' ttk :: treeview' verwendet werden. Und für 'text' gibt es eine nette Idee,' text' in einen ttk-Rahmen mit thematischem Rahmen zu setzen: http://wiki.tcl-lang.org/14796 –