Hallo liebe Python-Gemeinde,
als Anfänger habe ich es nun geschafft, ein Formular mit Eingabe- und Berechnungsfeldern zu erstellen.
Die Buttons funktionieren (berechnen).
Aber jetzt hänge ich beim Speichern des mit Werten befüllten gesamten Formulars für die Ablage u. Doku.
Nun zu meinen Fragen:
Wie muss die Funktion "save_it()" aussehen, damit das gesamte Formular erfasst wird (ähnlich einem Screenshot)?
Ginge das als *.jpg, *.png oder *.pdf?
VIELEN DANK SCHON MAL!
Hier der Abschnitt des Codes mit "Speichern als"-Button (b5), bei dem ich leider nicht weiter weiß:
from tkinter.filedialog import asksaveasfilename
# Speichern als:
def save_it():
filename = asksaveasfilename(
filetypes=[('jpg-files', '.jpg')], initialfile='zzFeder.jpg')
# Formular erstellen:
def makeform(root, fields):
entries = {}
for field in fields:
row = Frame(root)
lab = Label(row, width=48, text=field+": ", anchor='w')
ent = Entry(row, width=32)
ent.insert(0,"0")
row.pack(side=TOP, fill=X, padx=5, pady=2)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries[field] = ent
return entries
# Aufruf der Funktionen mit Buttons:
if __name__ == '__main__':
root = Tk()
ents = makeform(root, fields)
root.bind('<Return>', (lambda event, e=ents: fetch(e)))
b1 = Button(root, text='Federrate',
command=(lambda e=ents: springrate(e)))
b1.pack(side=LEFT, padx=5, pady=5)
b2 = Button(root, text='MaxFederhub+Block',
command=(lambda e=ents: maxspringstrokezw(e)))
b2.pack(side=LEFT, padx=5, pady=5)
b3 = Button(root, text='MaxVorspannung',
command=(lambda e=ents: maxpreload(e)))
b3.pack(side=LEFT, padx=5, pady=5)
b4 = Button(root, text='MaxAnfangs+EndkraftFeder',
command=(lambda e=ents: anfangsendkraft(e)))
b4.pack(side=LEFT, padx=5, pady=5)
b5 = Button(root, text='Speichern als',
command=(save_it))
b5.pack(side=LEFT, padx=5, pady=5)
b99 = Button(root, text='Quit', command=root.quit)
b99.pack(side=LEFT, padx=5, pady=5)
root.mainloop()
Formular speichern mitsamt Eingabewerten
Dir ist doch schon mal gesagt worden, dass du die Code Tags benutzen sollst. Wieso schon wieder diese unlesbare Textwüste?
Und zu deinem Problem: du liest einfach die Werte aus & schriebst sie in eine Textdatei. So wie alle anderen Programme. Word oder excel speichern auch keine Screenshots. Sondern die eigentlichen Daten.
Und zu deinem Problem: du liest einfach die Werte aus & schriebst sie in eine Textdatei. So wie alle anderen Programme. Word oder excel speichern auch keine Screenshots. Sondern die eigentlichen Daten.
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Hallo deets,
ja, Du hast ja recht. Ist schon eine Weile her...
Ich hab's rauskopiert aus PyCharm und wenn's hier eingefügt wird, ist die Formatierung weg.
In den FAQs unter Textformatierung steht leider nichts, wie das sein soll und wie das korrekt funktioniert.
Der Editor übernimmt demnach die Formatierung nicht. Da hab' ich's eben so gelassen.
Aber vielen Dank für Deine Hilfe.
ja, Du hast ja recht. Ist schon eine Weile her...
Ich hab's rauskopiert aus PyCharm und wenn's hier eingefügt wird, ist die Formatierung weg.
In den FAQs unter Textformatierung steht leider nichts, wie das sein soll und wie das korrekt funktioniert.
Der Editor übernimmt demnach die Formatierung nicht. Da hab' ich's eben so gelassen.
Aber vielen Dank für Deine Hilfe.
@Firlefanzus,
um deinen Code leserlich darzustellen, musst du
[code]
vor den Anfang des Quellcodes und
[/code]
hinter das Ende des Quellcode schreiben. Dann wird es richtig dargestellt.
Noch einfacher geht es, wenn du auf den Button "Vollständiger Editor & Vorschau" und dann auf den Button mit </> klickst. Dann werden diese Formatierungscodes automatisch eingefügt.
um deinen Code leserlich darzustellen, musst du
[code]
vor den Anfang des Quellcodes und
[/code]
hinter das Ende des Quellcode schreiben. Dann wird es richtig dargestellt.
Noch einfacher geht es, wenn du auf den Button "Vollständiger Editor & Vorschau" und dann auf den Button mit </> klickst. Dann werden diese Formatierungscodes automatisch eingefügt.
Hier der originale Code, mit originalen Einrückungen:
Grüße
Dennis
Code: Alles auswählen
from tkinter.filedialog import asksaveasfilename
# Speichern als:
def save_it():
filename = asksaveasfilename(
filetypes=[('jpg-files', '.jpg')], initialfile='zzFeder.jpg')
# Formular erstellen:
def makeform(root, fields):
entries = {}
for field in fields:
row = Frame(root)
lab = Label(row, width=48, text=field+": ", anchor='w')
ent = Entry(row, width=32)
ent.insert(0,"0")
row.pack(side=TOP, fill=X, padx=5, pady=2)
lab.pack(side=LEFT)
ent.pack(side=RIGHT, expand=YES, fill=X)
entries[field] = ent
return entries
# Aufruf der Funktionen mit Buttons:
if __name__ == '__main__':
root = Tk()
ents = makeform(root, fields)
root.bind('<Return>', (lambda event, e=ents: fetch(e)))
b1 = Button(root, text='Federrate',
command=(lambda e=ents: springrate(e)))
b1.pack(side=LEFT, padx=5, pady=5)
b2 = Button(root, text='MaxFederhub+Block',
command=(lambda e=ents: maxspringstrokezw(e)))
b2.pack(side=LEFT, padx=5, pady=5)
b3 = Button(root, text='MaxVorspannung',
command=(lambda e=ents: maxpreload(e)))
b3.pack(side=LEFT, padx=5, pady=5)
b4 = Button(root, text='MaxAnfangs+EndkraftFeder',
command=(lambda e=ents: anfangsendkraft(e)))
b4.pack(side=LEFT, padx=5, pady=5)
b5 = Button(root, text='Speichern als',
command=(save_it))
b5.pack(side=LEFT, padx=5, pady=5)
b99 = Button(root, text='Quit', command=root.quit)
b99.pack(side=LEFT, padx=5, pady=5)
root.mainloop()
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Hallo rogerb und Dennis89,
vielen Dank für die Anleitung - sehr nett!
Sowas gehört in die FAQs, nach ganz oben.
Viele Grüße und ein schönes Wochenende
vielen Dank für die Anleitung - sehr nett!
Sowas gehört in die FAQs, nach ganz oben.
Viele Grüße und ein schönes Wochenende
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Hallo rogerb und Dennis89,
vielleicht habt Ihr ja eine Idee, wie ich das gesamte Formular (alle Feldnamen+Eingabewertetc.) als *.jpg oder *.pdf direkt abspeichern kann?
Hier fehlt mir, wie ich mitteilen kann, dass das kpl. Formular zu speichern ist:
Bisher muss ich per Screenshot das Formular ausschneiden und abspeichern.
Vielen Dank für Eure Hilfe.
vielleicht habt Ihr ja eine Idee, wie ich das gesamte Formular (alle Feldnamen+Eingabewertetc.) als *.jpg oder *.pdf direkt abspeichern kann?
Hier fehlt mir, wie ich mitteilen kann, dass das kpl. Formular zu speichern ist:
Code: Alles auswählen
# Speichern als:
def save_it():
filename = asksaveasfilename(
filetypes=[('jpg-files', '.jpg')], initialfile='zzFeder.jpg')
Vielen Dank für Eure Hilfe.
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Hallo deets,
die Datenblätter werden ausgedruckt und gehen raus in die Werkstatt für die Mechaniker zum Einstellen der Federvorspannung etc..
Bisher wird ein Screenshot mit dem Snipping Tool gemacht, gespeichert in der File-Ablage, dann ausgedruckt.
Mit dem "Speichern als" Button wäre das eleganter.
Die Werte in eine Datenbank schreiben und wieder auslesen übersteigt meine Fähigkeiten bei Weitem!
Vielleicht gibt es ja jemand, der das für Geld erledigen möchte?
Am Ende brauchen wir eben ein physisches Blatt Papier für die Werkstatt.
Vielen Dank und viele Grüße
die Datenblätter werden ausgedruckt und gehen raus in die Werkstatt für die Mechaniker zum Einstellen der Federvorspannung etc..
Bisher wird ein Screenshot mit dem Snipping Tool gemacht, gespeichert in der File-Ablage, dann ausgedruckt.
Mit dem "Speichern als" Button wäre das eleganter.
Die Werte in eine Datenbank schreiben und wieder auslesen übersteigt meine Fähigkeiten bei Weitem!
Vielleicht gibt es ja jemand, der das für Geld erledigen möchte?
Am Ende brauchen wir eben ein physisches Blatt Papier für die Werkstatt.
Vielen Dank und viele Grüße
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Hallo Sirius3,
vielen Dank für den Tipp.
Aber ist es nicht so, dass ein Report-Generator die Werte aus einer Datenbank nimmt?
Eine Datenbank habe ich jedoch nicht.
vielen Dank für den Tipp.
Aber ist es nicht so, dass ein Report-Generator die Werte aus einer Datenbank nimmt?
Eine Datenbank habe ich jedoch nicht.
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Vielleicht würde auch eine Textdatei schon reichen, die man ausdrucken kann.
Ansonsten sind AFAIK die beiden verbreiteten Möglichkeiten PDFs aus Python heraus zu erzeugen Reportlab oder WeasyPrint. Ersteres ist sehr umfangreich und mächtig, letzteres etwas einfacher und weniger mächtig. Wahrscheinlich würde hier WeasyPrint ausreichen. Das HTML würde ich mit einer Template-Engine wie Jinja2 erstellen, oder zumindest ein Modul wie `markupsafe` verwenden, wenn man sich das per Zeichenkettenoperationen selber zusammenstückeln will.
Ansonsten sind AFAIK die beiden verbreiteten Möglichkeiten PDFs aus Python heraus zu erzeugen Reportlab oder WeasyPrint. Ersteres ist sehr umfangreich und mächtig, letzteres etwas einfacher und weniger mächtig. Wahrscheinlich würde hier WeasyPrint ausreichen. Das HTML würde ich mit einer Template-Engine wie Jinja2 erstellen, oder zumindest ein Modul wie `markupsafe` verwenden, wenn man sich das per Zeichenkettenoperationen selber zusammenstückeln will.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Vielen Dank für Eure Hilfe!
Klar, eine Text-Datei wäre ausreichend.
Aber was muss ich bitte beim Schalter "Speichern als" noch eintragen, damit er alle Feldnamen + Werte des Formulars als *.txt speichert?
Klar, eine Text-Datei wäre ausreichend.
Aber was muss ich bitte beim Schalter "Speichern als" noch eintragen, damit er alle Feldnamen + Werte des Formulars als *.txt speichert?
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Firlefanzus: Den Code der genau das tut musst Du schreiben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 12
- Registriert: Montag 18. November 2019, 11:22
Mal sehen, ob ich das zustande bringe...
Vielen Dank Euch allen!
Vielen Dank Euch allen!