Seite 1 von 1

Python GUI mit RTF?

Verfasst: Donnerstag 14. August 2008, 19:13
von theliquidwave
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

Verfasst: Donnerstag 14. August 2008, 23:01
von 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ß

Verfasst: Donnerstag 14. August 2008, 23:13
von Y0Gi
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.

Verfasst: Donnerstag 14. August 2008, 23:34
von theliquidwave
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

Verfasst: Freitag 15. August 2008, 06:41
von burli
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 ;)

Verfasst: Freitag 15. August 2008, 07:43
von mkesper
wxwidgets bietet eine RichTextCtrl.

Verfasst: Freitag 15. August 2008, 08:15
von burli
Hatte ich das doch richtig in Erinnerung. Aber wie gesagt, ob das einfacher ist als HTML wage ich zu bezweifeln

Verfasst: Freitag 15. August 2008, 14:03
von theliquidwave
Achso, naja dachte immer :D
Dann mach ich's doch mit HTML!

Danke :)

~ Chris

Verfasst: Freitag 15. August 2008, 15:07
von Y0Gi
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.

Verfasst: Freitag 15. August 2008, 17:00
von 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.