views:

424

answers:

4

Sorry, perhaps I haven't described the problem well first time. All your answers are interesting, but most of them are almost full-featured web browsers, my task is much simpler.

I'm planning to write a GUI application using one of the available on linux GUI frameworks (I haven't yet chosen one). I shall use html in my application to render into one of my application frames text with some attributes — different fonts etc, which are stored in CSS.

The html shall be generated by my application, so the only task is to render a html / CSS string. Is there any widget which can do only that render and nothing more — no history, no bookmarks, no URL-loading etc? If there isn't I shall use one of those you advised — it's ok — but I'm just interested if there is just an html-renderer without any extra features.

A: 

Webkit

Xinus
+9  A: 

You should use a UI framework:

An other option is to open the OS default web browser through something like this:

import webbrowser
url = 'http://www.python.org'

# Open URL in a new tab, if a browser window is already open.
webbrowser.open_new_tab(url + '/doc')

# Open URL in new window, raising the window if possible.
webbrowser.open_new(url)

You can find more info about the webbrowser module here. I think that the simplest way would be to use the os browser if you are looking for something very light-weight since it does not depend on a framework and it would work in all platforms. Using Tk may be an other option that is light and will not require to install a 3rd party framework.

mandel
Not to forget WxPython (http://www.wxpython.org/): The demo shows how to embed Internet Explorer on Windows and WebKit on Macs...
PhilS
@PhilSInternet Explorer isn't available on linux ) Also it's to heavy
netimen
A: 

Flying Saucer Project -- an XHTML renderer.

No, it's not Python. It's -- however -- trivially called from Python.

S.Lott
Can I embed it in my python application?
netimen
@netimen: I can't understand your question. What do you mean by "embed"? Flying saucer is Java. You can easily call a Java program from within Python. Would that be "embedded"? You could use the Jython JVM to run both components. Would that be "embedded"?
S.Lott
I mean that I want to render the html into a window of my application — can I do that?
netimen
Ummm... I seriously don't get your question. If you have an "application", it has windows and frames and panels, correct? Almost all GUI frameworks have an HTML rendering capability. Since your question doesn't mention the framework you're using, please UPDATE your question to specifically state which GUI framework your application is using. If your application is not using a GUI framework, please UPDATE your question to explain what you're doing.
S.Lott
Sorry for bad explanation. I don't mention any framework because I'm currently only planning my application, so I haven't chosen the framework yet. But there shall be an application with windows and panels.The problem is that html rendering capabilities of GUI frmaework are either too weak (wx.HtmlWindow doesn't support CSS) or too strong (pywebkitgtk is almmost a full-featured browser). I try to find a good balance
netimen
@netimen: Please update your question. Please do not add useful information in a comment here. Please update your question so that all others can see this information.
S.Lott
A: 

Maybe HulaHop could be interesting for you (can also be combined with Pyjamas). The Mozilla Prism Project might also be relevant.

nikow