Bild im label aus dem Code anzeigen...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
linuxer7
User
Beiträge: 14
Registriert: Mittwoch 12. Mai 2021, 18:24

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_())
#-------------------------------------------------------------------------
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

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()
linuxer7
User
Beiträge: 14
Registriert: Mittwoch 12. Mai 2021, 18:24

Hallo Sirius3,

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

Gruß
Thomas
linuxer7
User
Beiträge: 14
Registriert: Mittwoch 12. Mai 2021, 18:24

Hallo Sirius3,

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

Gruß
Thomas
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@linuxer7: Das ist vergleichbar mit ``std::bind()`` in C++. Wobei es das in den 80ern noch nicht gab. Jedenfalls nicht in der C++-Standardbibliothek.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

@__blackjack__ nicht nur da nicht. Das ist nur durch Template-Meta-Programmierung verfuegbar, und die gab's bestenfalls Ende der 90iger.
Antworten