[PySide] QLabel vs QWebView for simple html display

Frank Rueter | OHUfx frank at ohufx.com
Wed Nov 13 01:28:08 CET 2013

just to follow up, here is what I have done so far (tried to stay away 
from external libraries as I will have to distribute the app):


This seems to work for me but am happy to hear any comments on this 


On 12/11/13 21:13, Sean Fisk wrote:
> Hi Frank,
> I think it depends whether the HTML dictates the layout or you would 
> like to dictate the layout:
>   * HTML dictates layout → Use the web view.
>   * I want to dictate the layout → Parse the HTML to extract the URL,
>     download the image manually, and put it into a QLabel.
> Also remember that if you would like to distribute this and bundle 
> PySide/Qt, using WebKit will add a significant size to your 
> executable. If you truly need it, include it. However, for this, I 
> don’t think it’s necessary.
> From what you have said, it sounds like you would like to dictate the 
> layout. The process isn’t exactly simple, but it’s doable in not too 
> many lines. Off the top of my head:
> |#!/usr/bin/env python
> import  sys
> from  PySideimport  QtGui
> import  requests
> import  lxml.html
> def  main(argv):
>      app = QtGui.QApplication(argv)
>      widget = QtGui.QWidget()
>      layout = QtGui.QVBoxLayout(widget)
>      html ='''<p><span style="font-size: 17px;"><span style="color: #993300;"><img style="margin-right: 15px; vertical-align: top;" src="https://pypi.python.org/static/images/python-3.png" alt="announcements" /><cite>some text that is pulled from a website but which will be quite simple.</cite></span></span><img src="http://placekitten.com/200/100" /></p>'''   # NOPEP8
>      doc = lxml.html.fragment_fromstring(html)
>      for  img_src_attributein  doc.xpath('//img/@src'):
>          response = requests.get(img_src_attribute)
>          pixmap = QtGui.QPixmap()
>          pixmap.loadFromData(response.content)
>          label = QtGui.QLabel()
>          label.setPixmap(pixmap)
>          layout.addWidget(label)
>      widget.show()
>      widget.raise_()
>      return  app.exec_()
> if  __name__ =='__main__':
>      raise  SystemExit(main(sys.argv))|
> ... which yields...
> Inline image 2
> I didn't address the issue of transparent backgrounds, etc., because 
> I'm not sure exactly what's going on there. But all three of the 
> widgets on-screen are QLabels, so they should be able to do anything a 
> QLabel can do.
> Obviously, do some more error checking than I did if you are pulling 
> this from a website with untrusted data. Let me know if you need help 
> with that. Hope this helps!
> Sincerely,
> --
> Sean Fisk
> On Mon, Nov 11, 2013 at 11:26 PM, Frank Rueter | OHUfx 
> <frank at ohufx.com <mailto:frank at ohufx.com>> wrote:
>     Hi all,
>     I have a QLabel in my app that displays some very simple html code
>     pulled from a website.
>     So far I have been using it successfully as a sort of news feed,
>     but now
>     I need to display an image from a url as well, which QLabel can't
>     do afaik.
>     So I had a go with QWebView but that just won't be have the same as
>     QLabel when it comes to background colour (tried to set it to be
>     transparent), sizes, size policies etc.
>     I'm also getting some redraw problems when the QWebView is set to a
>     transparent background.
>     Here is some test code:
>     http://pastebin.com/cSizj9ET
>     Is it the right approach to force QWebView to behave like QLabel
>     for the
>     sole reason of being able to display an image via html? Or is there a
>     simpler way of doing this?
>     Cheers,
>     frank
>     _______________________________________________
>     PySide mailing list
>     PySide at qt-project.org <mailto:PySide at qt-project.org>
>     http://lists.qt-project.org/mailman/listinfo/pyside

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20131113/ff98c5d7/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/png
Size: 62474 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20131113/ff98c5d7/attachment.png>

More information about the PySide mailing list