Text wird nicht übernommen
Verfasst: Mittwoch 21. April 2021, 09:50
Hallo, ich bin gerade dabei ein kleines Programm zu basteln in dem Rezepte angezeigt werden, wenn ich das ganze ausführe funktioniert es auch soweit, allerdings haben alle Rezepte den gleichen Text. Ich vermute, dass das daran liegt, dass ich eine lambda-function verwende. Allerdings weiß ich nicht wie ich das ganze anders lösen kann bzw. wie man den jetzigen Fehler beheben kann. Hier mein Code:
Alle Rezepte sind im Unterornder "recipes" als .txt Datein abgespeichert. Ich entschuldige mich jetzt schonmal für meinen Codestil und meine Rechtschreibung
mfg
Code: Alles auswählen
from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout, QLabel, QPushButton
from PyQt5 import QtCore
from PyQt5.QtGui import QIcon
import sys
import glob
app = QApplication(sys.argv)
app.setStyle("Fusion")
app.setApplicationName("Rezepte")
win = QWidget()
win.setStyleSheet(open("style.css").read())
win.setWindowIcon(QIcon("./icon.png"))
grid = QGridLayout()
def frame1():
global win, grid
for i in reversed(range(grid.count())):
grid.itemAt(i).widget().deleteLater()
buttons = []
for f in glob.glob("recipes/*.txt"):
b = QPushButton(win)
b.setText(f.replace(".txt", "").replace("recipes\\", ""))
print(f)
file = open(f)
rezept = file.read()
file.close()
print(rezept)
b.clicked.connect(lambda: recipe_frame(rezept))
buttons.append(b)
for b in buttons:
b.setStyleSheet(open("style_buttons.css").read())
title = QLabel("🍔Rezepte🍕")
title.setAlignment(QtCore.Qt.AlignCenter)
title.setStyleSheet("font-size: 30px;\nfont-family: Arial;")
grid.addWidget(title, 0, 0)
for i, b in enumerate(buttons, start=1):
grid.addWidget(b, i, 0)
win.setLayout(grid)
def recipe_frame(recipe: str):
global win, grid
for i in reversed(range(grid.count())):
grid.itemAt(i).widget().deleteLater()
buttons = []
back_button = QPushButton(win)
back_button.setText("Zurück")
back_button.clicked.connect(frame1)
buttons.append(back_button)
for b in buttons:
b.setStyleSheet(open("style_buttons.css").read())
recipe_label = QLabel(recipe)
grid.addWidget(back_button, 0, 0)
grid.addWidget(recipe_label, 1, 0)
win.setLayout(grid)
frame1()
win.show()
sys.exit(app.exec_())

mfg