[PyQt] Best way to display additional window
Filip Gruszczyński
gruszczy at gmail.com
Thu Dec 4 23:10:00 GMT 2008
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.
--
Filip Gruszczyński
More information about the PyQt
mailing list