Seite 1 von 1
PySide Scrollarea
Verfasst: Freitag 1. Juli 2011, 09:11
von ScooB
Hallo
ich komm grad nicht weiter und zwar habe ich in ein Dockwidget in dem ich eine Grafik lade alledings ist die Grafik größer wie das Widget und ich benötige Scrollbars
nur irgendwie bekomm ich das nicht hin
Hätte jemand nen kleines Beispiel oder anregungen
Danke
ScooB
Re: PySide Scrollarea
Verfasst: Freitag 1. Juli 2011, 09:47
von lunar
In der
Dokumentation zu "QScrollArea" ist unmittelbar am Anfang ein Beispiel für das Anzeigen eines Bilds zu sehen.
Re: PySide Scrollarea
Verfasst: Freitag 1. Juli 2011, 09:58
von ScooB
soweit bin ich auch gekommen nur ist mein Problem das er die Grafik nicht anzeigt wenn ich es so verwende und dadurch auch das QWidget keine Scrollbar hat
mein Problem ist bestimmt das ich es nocht anhänge an das QWidget
Bei einem QMainwindow mach man ja .setCentralWidget() wie mache ich das jetzt in einem QWidget??
Re: PySide Scrollarea
Verfasst: Freitag 1. Juli 2011, 10:18
von lunar
@ScooB: Zeige bitte Deinen Quelltext, ansonsten kann ich nur raten, was Du meinst.
Re: PySide Scrollarea
Verfasst: Freitag 1. Juli 2011, 10:24
von ScooB
Code des Witget das angedockt wird
Code: Alles auswählen
class singleline(QWidget):
def __init__(self, auswahl):
super(singleline, self).__init__()
self.imageLabel = QLabel()
self.image = QImage("1.png")
self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
self.scrollArea = QScrollArea()
self.scrollArea.setBackgroundRole(QPalette.Dark)
self.scrollArea.setWidget(self.imageLabel)
if auswahl == 1:
self.singleline1()
else:
self.singleline2()
Code wie das Widget als QDockwidget angedockt wird
Code: Alles auswählen
self.dock = QDockWidget("Singleline1", self)
self.dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
self.dock.setAllowedAreas(Qt.RightDockWidgetArea)
self.singleline1 = singleline(1)
self.dock.setWidget(self.singleline1)
self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dock)
Re: PySide Scrollarea
Verfasst: Freitag 1. Juli 2011, 10:41
von lunar
@ScooB: Keines der Steuerelement hat ein Vater-Objekt. Folglich ist es nicht weiter überraschend, dass die ScrollArea nicht angezeigt wird, schließlich wird ihr nirgendwo "gesagt", wo sie angezeigt werden soll. Das "parent"-Argument in den Konstruktoren von "QWidget"-Objekten ist nicht zum Spaß da, und sollte
immer korrekt angegeben werden.
Gibt es einen besonderen Grund, warum "singleline" von "QWidget" erbt? Dem Beispiel zufolge wäre es wesentlich sinnvoller, wenn "singleline" direkt von "QScrollArea" erben würde, da der einzige Zweck von "singleline" offenbar die Anzeige der ScrollArea ist.
Klassennamen sollten gemäß PEP 8 mit einem Großbuchstaben beginnen ("singleline" → "Singleline").
Für die Zukunft gewöhne Dir bitte ab, unvollständige Ausschnitte zu zeigen. In diesem Fall hast Du Glück, dass der Fehler aus diesen Abschnitten ersichtlich ist, aber das ist erfahrungsgemäß ein seltenes Glück. Erstelle bitte stattdessen ein minimales,
lauffähiges Beispiel, mit dem anderen den Fehler nachvollziehen können. Danke
