[PyQt] Re: how to show interactive Picture
Markus Feldmann
feldmann_markus at gmx.de
Tue Feb 10 15:02:13 GMT 2009
Mads Ipsen schrieb:
> --------- Original Besked --------
> Fra: Markus Feldmann <feldmann_markus at gmx.de>
> Til: pyqt at riverbankcomputing.com <pyqt at riverbankcomputing.com>
> Emne: [PyQt] Re: how to show interactive Picture
> Dato: 09/02/09 23:58
>
>> Mads Ipsen schrieb:
>> > Could is be that you try to paint before the window is shown? You
> need to
>> > call show() before you can start painting. The following snippet
> generates
>> > an error similar to yours:
>> Hi,
>>
>> This is not all of my Code. So there is a <show()> in my main source
>
>> code. This Source Code only shows a sub-widget of a MDI Application.
>>
>> However this window is shown, but without the picture.
>> How do the program know in which widget shall the Pixmap
>> be shown ?
>>
>> _______________________________________________
>> PyQt mailing list PyQt at riverbankcomputing.com
>> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>>
>
> Thats something you tell the program. You reimplement the method
> 'paintEvent' for a widget class like in the example I posted. Then for a
> particular instance of the widget, the window is painted everytime a
> paintEvent occurs and the widget get painted. A paintEvent event occurs eg.
> when a window is hidden underneath another window and then shown.
>
> To a draw a pixmap onto a widget do something like this in the paintEvent
> method:
>
> def paintEvent(self, event):
> painter = QtGui.QPainter(64,64)
> pixmap = QtGui.QPixmap()
>
> painter.begin(self)
> painter.drawPixmap(0,0,pixmap)
> painter.end()
>
> Mads
I think my Problem is that i have to send an envent?
As you wrote i changed some of my code. I parted my
scrollarea, where i want to paint my picture, and my
mainwindow, which is a MDI Sub-Widget. The scrollarea
will be centered into the MDI Sub-Widget.
class ScrollArea(QScrollArea):
def __init__(self, parent=None):
QScrollArea.__init__(self, parent)
self.pen = QPen()
self.brush = QBrush()
self.pixmap = QPixmap()
self.pixmap.load(":/../media/images/aventurien.jpg")
def paintEvent(self, event):
painter = QPainter()
painter.begin(self)
painter.setPen(self.pen)
painter.setBrush(self.brush)
painter.save()
painter.drawPixmap(0, 0, self.pixmap)
painter.restore()
painter.end()
class ReiseHelfer(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.createActions()
self.createMenus()
self.createStatusBar()
self.setWindowTitle(self.tr("Reisehelfer"))
self.scrollArea = ScrollArea()
self.setCentralWidget(self.scrollArea)
self.readSettings()
More information about the PyQt
mailing list