Mehrere Farben in Eingabefeld

Fragen zu Tkinter.
Antworten
DerUser9
User
Beiträge: 14
Registriert: Mittwoch 12. November 2014, 20:42

Sonntag 15. November 2015, 21:29

Hallo Zusammen,
Ich programmiere gerade einen Texteditor und will nun, dass man mehrere Farben im Eingabefeld hat. Eine Farbe kann man ja einfach mit fg einstellen.
Ist es auch möglich wenn ich jetzt das Wort Fischvogel schreibe, dass das rot hervorgehoben wird? Oder müsste ich für das zu etwas "mächtigeren" greifen wie tkinter?

Ich hoffe ihr könnt mir helfen :D
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Sonntag 15. November 2015, 22:21

Also, wenn Du mehrere Farben haben möchtest, dann ist das mit einem normalen Eingabefeld auch nicht machbar. Wenn Du Dir aber selber eines programmierst, dann schon. Mit Canvas und text item in tkinter ist so etwas durchaus machbar, wenn auch etwas aufwändig zu programmieren.
BlackJack

Sonntag 15. November 2015, 22:51

@DerUser9: Was ist denn bei Dir ein „Eingabefeld“? Und wenn Du nicht `tkinter` verwendest, was dann, und warum dann im Tkinter-Unterforum?
DerUser9
User
Beiträge: 14
Registriert: Mittwoch 12. November 2014, 20:42

Montag 16. November 2015, 09:18

BlackJack hat geschrieben:@DerUser9: Was ist denn bei Dir ein „Eingabefeld“? Und wenn Du nicht `tkinter` verwendest, was dann, und warum dann im Tkinter-Unterforum?
Ich hab schon Tkinter benutzt. Ich wollte nur fragen ob es technisch machbar ist. Und canvas hab ich keine Ahnung :D. Ich hab ScrolledText verwendet. Und wie könnte ich das jetzt mit Canvas lösen?
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Montag 16. November 2015, 11:30

Es muss nicht unbedingt ein Canvas sein, der bietet sich aber an, da man ihn scrollen kann und auch so ziemlich alles damit machen kann.
Da könntest Du die Buchstaben auch einzeln mit x und y Koordinaten als text item platzieren. Und wenn man einen Buchstaben einfügt, die rechts davon nach rechts rutschen. Da wäre natürlich auch rechnen nötig. Etwa die Breiten verschiedener Buchstaben in Proportionalschrift und abhängig von Schriftgröße und Schriftart.

Den Zeilenumbruch müßtest Du natürlich auch dann selber programmieren.
Beim Canvas kannst Du auch Grafiken einfügen, etwa Bullets.

Da läßt sich eine Textverarbeitung damit programmieren. Aber wie gesagt, es ist aufwändig. Es sei denn Du beschränkst Dich auf Fixbreitenschrift, da würde das Ganze dann einfacher.

Aber warum willst Du eine Textverarbeitung programmieren. Es gibt doch schon etliche Textverarbeitungen. Übrigens unter Windows gibt es auch einige Druckertreiber, die HPGL unterstützen. Und mit etwas Aufwand könnte man dann solche in Files gedruckte Seiten in Canvas items konvertieren. Wenn ich mich recht erinnere, könnte es HP Laserjet gewesen sein.

Ich würde denken, versuch erst einmal so eine Konvertierung, damit Du ein wenig einen Überblick bekommst.

Wie gesagt, möglich ist alles, aber wirklich Textverarbeitung, das ist aufwändig.
BlackJack

Montag 16. November 2015, 13:54

@Alfons Mittelmeyer: Jemanden zu Empfehlen Canvas dazu zu verwenden all das mühsam nachzuprogrammieren was das verwendete `Text` bereits kann ist irgendwie ziemlich sinnfrei. Und Texteditor ≠ Textverarbeitung.

@DerUser9: `ScrolledText` ist von `Tkinter.Text` abgeleitet, man kann dort also auch mittels Tags Textstellen markieren und den Tags dann andere Farben, Schriftarten, und so weiter zuordnen. Siehe zum Beispiel http://effbot.org/tkinterbook/text.htm oder http://infohost.nmt.edu/tcc/help/pubs/t ... /text.html für Referenzdokumentation zum `Text`-Widget.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Montag 16. November 2015, 17:51

@BlackJack Sorry, hatte mir das Text Widget von tkinter noch nicht so richtig angeschaut. Aber mit der Einfügung von tags bietet es durchaus alles, was man nicht nur für einen Texteditor, ja sogar für eine Textverarbeitung braucht.

Mit dem text widget wäre durchaus Libre Office Write auf tkinter Basis möglich. Und Canvas bietet auch alles für so etwas wie Libre Office Draw.
DerUser9
User
Beiträge: 14
Registriert: Mittwoch 12. November 2014, 20:42

Dienstag 17. November 2015, 17:54

Ich hab es nun geschafft das es in einem bereits vorhandenen Text andere Farbe hat (damit meine ich insert). Aber wie schaff ich es jetzt , dass die Wörter im laufenden Gebrauch unterstrichen werden? :(
BlackJack

Dienstag 17. November 2015, 23:35

@DerUser9: Falls „laufender Gebrauch“ so etwas wie Syntaxhervorhebung wie in einem Quelltexteditor meint, kannst Du Dir ja mal anschauen wie IDLE das gelöst hat. Das verwendet ja Tkinter.
Antworten