Seite 1 von 1

Bild im label aus dem Code anzeigen...

Verfasst: Mittwoch 12. Mai 2021, 18:48
von linuxer7
Hallo Leute,

ich bin ein absoluter Anfänger was Python betrifft und versuche gerade mir die Sprache selber beizubringen.
Etwas Erfahrung im Umgang mit C++ habe ich noch aus den 80ern, ja ist ne weile her.

Ich habe mir im Internet einige Youtube Videos angesehen und habe mit dem Qdesigner und Spyder3 meine Bekanntschaft gemacht.
Leider wird in vielen Beispiel-Videos Windows als OS benutzt und das Einbinden des ui-Files gezeigt. Ich rufe das aber im Code nur auf und die Vorgehensweise ist etwas anders als sie gezeigt wird.
Ich hoffe Ihr versteht was ich damit sagen will.

Es ist ein kleines Programm das nur aus einem Label und zwei Pushbutton besteht.

Das erste Bild wird über den QDesigner pixmap geladen.
Mit den jeweiligen Tasten (Bild 1 und Bild 2) soll ein anderes Bild geladen werden.

Kann mir bitte jemand einen Schubs in die richtige Richtung geben ?

Die Syntax :

w.bild_lbl.pixmap('b33.jpeg')

ist falsch.
Wie lade ich ein Bild in ein Label ??

Vielen Dank schon mal im voraus. :)

Gruß
Thomas

#-------------------------------------------------------------------------
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed May 12 18:41:28 2021

@author: thomas

"""
import sys
import PyQt5.QtCore as core
import PyQt5.QtWidgets as widgets
import PyQt5.QtGui as gui
import PyQt5.uic as uic


app = widgets.QApplication(sys.argv)
w = uic.loadUi("bild_test.ui")

w.bild_1_btn.setText("Bild 1")
w.bild_2_btn.setText("Bild 2")

def bild1():
w.bild_lbl.pixmap('b33.jpeg')

#def bild2():


w.bild_1_btn.clicked.connect(bild1)
#w.bild_2_btn.clicked.connect(bild2)

w.show()
sys.exit(app.exec_())
#-------------------------------------------------------------------------

Re: Bild im label aus dem Code anzeigen...

Verfasst: Mittwoch 12. Mai 2021, 19:39
von Sirius3
Bevor Du ein Pixmap verwenden kannst, mußt Du eines erzeugen.
Funktionen müssen alle Objekte, die sie brauchen, über ihre Argumente bekommen, `w` kommt in bild1 aber aus dem Nichts.
`w` ist auch kein guter Variablenname, die sollten aussagekräftig sein.

Code: Alles auswählen

#!/usr/bin/env python3
import sys
import PyQt5.QtCore as core
import PyQt5.QtWidgets as widgets
import PyQt5.QtGui as gui
import PyQt5.uic as uic
from functools import partial


def bild1(window):
    bild = gui.QPixmap('b33.jpeg')
    window.bild_lbl.setPixmap(bild)


def main():
    app = widgets.QApplication(sys.argv)
    window = uic.loadUi("bild_test.ui")
    window.bild_1_btn.setText("Bild 1")
    window.bild_2_btn.setText("Bild 2")
    window.bild_1_btn.clicked.connect(partial(bild1, window))
    window.show()
    sys.exit(app.exec())

if __name__ == '__main__':
    main()

Re: Bild im label aus dem Code anzeigen...

Verfasst: Mittwoch 12. Mai 2021, 20:22
von linuxer7
Hallo Sirius3,

danke, werde mich morgen mal dran machen das zu verstehen :)

Gruß
Thomas

Re: Bild im label aus dem Code anzeigen...

Verfasst: Donnerstag 13. Mai 2021, 07:36
von linuxer7
Hallo Sirius3,

funktioniert klasse. Danke.
Versuche nun partial zu verstehen. Habe noch einen weiten weg vor mir.

Gruß
Thomas

Re: Bild im label aus dem Code anzeigen...

Verfasst: Donnerstag 13. Mai 2021, 10:18
von __blackjack__
@linuxer7: Das ist vergleichbar mit ``std::bind()`` in C++. Wobei es das in den 80ern noch nicht gab. Jedenfalls nicht in der C++-Standardbibliothek.

Re: Bild im label aus dem Code anzeigen...

Verfasst: Donnerstag 13. Mai 2021, 10:45
von __deets__
@__blackjack__ nicht nur da nicht. Das ist nur durch Template-Meta-Programmierung verfuegbar, und die gab's bestenfalls Ende der 90iger.