auf meiner GUI wird ein Bild als Pixmap in einem Label angezeigt. Wenn ich die Größe des Fensters mit der Maus weiter aufziehe, bleibt das Bild jedoch unverändert und skaliert nicht entsprechend mit. Es wird höchstens innerhalb des Labels zentriert, je nach Art der gewählten Ausrichtung.
Ich habe dabei die relevanten Codefragmente aus dem PyQt4-Beispiel "Screenshot" herauskopiert. Dort funktioniert das super. Die resizeEvent() Funktion wird mit dem entsprechenden Code überschrieben.
Ich versuche mich aber bereits seit 3 Stunden an meiner eigenen GUI daran, aber ich finde den Fehler nicht. Den einzigen Hinweis, den ich soweit entdeckt habe ist, dass die resizeEvent() bei mir nicht aufgerufen wird. Ersichtlich an dem fehlenden "resized" auf der Konsole.
Kann mir jemand sagen, was ich falsch mache? QMainWindow erbt doch von QWidget die resizeEvent(), oder nicht?
Viele Grüße
antimatter
Code: Alles auswählen
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import uic
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = uic.loadUi('test.ui')
self.ui.show()
self.openImage()
def openImage(self):
self.originalPixmap = None
self.originalPixmap = QPixmap.fromImage(QImage(QString("2002-04-06-45.tif")))
self.updateLabel()
def resizeEvent(self, event):
print "resized"
scaledSize = self.originalPixmap.size()
scaledSize.scale(self.ui.lblImage.size(), Qt.KeepAspectRatio)
if not self.ui.lblImage.pixmap() or scaledSize != self.ui.lblImage.pixmap().size():
self.updateLabel()
def updateLabel(self):
self.ui.lblImage.setPixmap(self.originalPixmap.scaled(
self.ui.lblImage.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))
if __name__ == '__main__':
app = QApplication(sys.argv)
mainwindow = MainWindow()
sys.exit(app.exec_())
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>344</width>
<height>256</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="lblImage">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>344</width>
<height>22</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>