Python GUI mit RTF?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hi.
Ist es möglich, in Python mit einem GUI Toolkit eine RTF-Textbox darzustellen? Mit dem HTML Kram von Qt komme ich einfach nicht klar.

~ Chris
Grüßle.
abgdf

Hi,

eine Textbox in Tkinter ginge z.B. so:

Code: Alles auswählen

#!/usr/bin/env python

import Tkinter
import tkMessageBox

from Tkconstants import *

class myWindow:

    def __init__(self):

        self.mw = Tkinter.Tk()
        self.mw.option_add("*font", ("Arial", 15, "normal"))
        self.mw.geometry("+250+200")
        self.mw.title("Text-Field-Demonstration")

        self.tfield = Tkinter.Text(self.mw,
                                   font = "{Courier} 15 {normal}",
                                   width = 82,
                                   height = 20,
                                   background = 'white',
                                   foreground = 'black')
        self.tfield.pack()

        self.tfield.insert(END, "Hello from inside the Text-widget.\n\nIf you click on it once, you can edit this text.")

        self.fr = Tkinter.Frame(self.mw)

        self.btn1 = Tkinter.Button(self.fr, text = "Show contents", command = self.Contents)

        self.btn2 = Tkinter.Button(self.fr, text = "Clear text-field", command = self.clearField)

        self.btn3 = Tkinter.Button(self.fr, text = "Exit", command = self.mw.destroy)

        self.btn1.pack(side = LEFT, padx = 20)
        self.btn3.pack(side = RIGHT, padx = 20)
        self.btn2.pack(padx = 20)
        self.fr.pack(pady = 10)

        self.mw.mainloop()

    def Contents(self):

        msg = "The text-field contains right now:\n\n"
        msg += self.tfield.get("1.0", END) + "\n"

        tkMessageBox.showinfo(title = 'Text-field-Contents', message = msg)

    def clearField(self):

        self.tfield.delete("1.0", END)

if __name__ == "__main__":
   app = myWindow()
Wie Du RTF-Texte da reinkriegst, weiß ich aber nicht.

Reicht Dir das so ?

Gruß
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Dafür muss es wohl ein entsprechendes Widget sein. Ich bin ziemlich sicher, sowas in der wx-Demo-Applikation gesehen zu haben. Andere wichtige GUI-Toolkits sollten das auch bieten, wobei einige das möglicherweise mit HTML-Widgets abdecken wollen. Einen RTF-zu-HTML-Konverter sollte man jedoch auch leicht finden können, wenn man diesen Weg denn beschreiten will/muss.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hi.
Wie ich eine einfache Textbox hin bekomme weiß ich auch selber :D

@ Yogi, jo, irgendwo habe ich das auch schon einmal gesehen. Aber eigentlich war das nur meine Absicht, es mit RTF zu machen, da es doch sicherlich schneller ist, als jedesmal den kompletten HTML kram zu parsen, oder?

~ Chris
Grüßle.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

RTF ist auch eine Art Auszeichnungssprache die geparst werden muss. Das macht nicht viel Unterschied. Da finde ich HTML ehrlich gesagt einfacher.

Wenn ich das richtig in Erinnerung hat gibt es bei wxWidgets aber eine RTF fähige Komponente. Oder war das Scintilla? Die gibts auch bei Qt. Dann viel Spaß beim Einrichten ;)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

wxwidgets bietet eine RichTextCtrl.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hatte ich das doch richtig in Erinnerung. Aber wie gesagt, ob das einfacher ist als HTML wage ich zu bezweifeln
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Achso, naja dachte immer :D
Dann mach ich's doch mit HTML!

Danke :)

~ Chris
Grüßle.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Nun, wenn deine Quelldaten RTF sind, ist es sicher schneller, die in einem RTF-Widget darstellen zu lassen als die erst noch in HTML zu verwandeln. Zudem vermute ich, dass RTF einfacher (= schneller) zu parsen ist.
BlackJack

So etwas sollte man nicht vermuten sondern messen. Aber egal welcher Parser da vorne liegen mag, möchte ich mal die Textmenge sehen, ab der dieser Unterschied in einer GUI relevant wird.

Vorteil bei HTML: Das können sicher mehr Leute ohne WYSIWYG-Anwendung lesen und schreiben als RTF.
Antworten