[PyQt] Best way to display additional window
Phil Thompson
phil at riverbankcomputing.com
Fri Dec 5 09:07:27 GMT 2008
On Fri, 5 Dec 2008 00:10:00 +0100, "Filip Gruszczyński"
<gruszczy at gmail.com> wrote:
> I would like to be able to display a very simple widget: widget with
> an image drawn inside (it is supposed to display an image, that was
> previously visible only on a thumbnail). This should be opened in a
> new window.
>
> First thing I tried was QDialog. But it seems, that just painting on
> it using paintEvent is not enough and it disappears (though I used
> exec_ on it). So I went back to a widget, checked the docs for making
> it a standalone window and tried something like this:
>
> class ImageViewer(QWidget):
>
> def __init__(self, resource, parent):
> QWidget.__init__(self, parent, Qt.Popup)
> self.__resource = resource
> self.repaint()
>
> def paintEvent(self, event):
> painter = QPainter(self)
> image = QImage(self.__resource.file())
> self.resize(image.size())
> painter.drawImage(QRect(QPoint(0, 0), image.size()), image)
>
> This should be modal, top-level window. I call show on it, but it
> appears only for a moment to disappear after that. I do:
>
> column = event.pos().x() / self.RectangleFullWidth
> row = event.pos().y() / self.RectangleFullHeight
> image = ImageViewer(self.__drawn[(column, row)], self)
> image.show()
>
> (I am picking thumbnail from the displayed and trying to display it in
> full).
>
> I'd really appreciate some advice on how can I achieve a stand alone
> window for displaying some stuff, e.g. an Image. As long as there are
> some widgets inside it's easy, because dialog is enough. But this
> doesn't.
Convert the image to a QPixmap and use a QLabel.
Phil
More information about the PyQt
mailing list