Probleme mit einbinung der Get Funktion in Emails

Fragen zu Tkinter.
Antworten
TorstenVoelker
User
Beiträge: 124
Registriert: Mittwoch 5. Februar 2025, 12:55

Hallo Ihr lieben , ich wusste Jetzt nicht wie ich die Überschrift Formulieren sollte .
Ich habe ein kleines Formular erstellt und hahe ein EmailScript geschrieben .
Ich wollte die Felder in der Email Funktionen einbinden aber irgendwas funktioniert nicht siehe Pfeil im Script.

Ausserdem wenn ich eine Funktion aufrufen will bzw erstelle wird die Message Variable rot dargestellt wie ein fehler .
Wenn ich es Manuel mache ohne Funktion und ohne der Variablen zuweisung des Formulars also nur das Email Script , das Funktioert.



Würde mich auf Hilfe sehr freuen .


Sorry wenn Fehler in der Rechtschreibung sind.



Code: Alles auswählen

def senden():


message = EmailMessage()
message.set_content()
message["From"] = "Test"
message["subject"] = "Test"
message["to"] = emp_label.get()  <-------------

server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server.login("", "")
server.send_message(message)
server.quit()



text_label = ttk.Label(window, text="Windows 3.1 Managed Applacation", font=("arial",15))
text_label.pack(side="top", padx=20, pady=20)

emp_label = ttk.Label(window , text="Empfänger: ", font=("arial",12), bg="cyan4")
emp_label.place(x=100, y=340)
emp_form = ttk.Entry(window , font=("arial", 10), width="35")
emp_form.place(x=250, y=340)


emp_label2 = ttk.Label(window , text="Deine Nachricht:", font=("arial",12), bg="cyan4")
emp_label2.place(x=100, y=400)

nachricht_entry = ttk.Entry(window , font=("arial",10), width="40")
nachricht_entry.place(x=250,y=400)


send_label = ttk.Button(window , text="Absenden", command=senden)
send_label.place(x=550,y=620)




Sirius3
User
Beiträge: 18215
Registriert: Sonntag 21. Oktober 2012, 17:20

Ohne die Importe und den restlichen Code ist es schwierig herauszufinden, was Du eigentlich machst.
Alles was Funktionen brauchen, muß man über die Argumente übergeben. Bei GUIs kann man noch mit functools.partial arbeiten, aber irgendwann kommt man um Klassen nicht herum.
place sollte man nicht benutzen, auch läßt man am besten die Defaulteinstellungen, was Größe und Schriftart betrifft. Der Nutzer des Systems hat im Zweifel alles nach den eigenen Bedürfnissen eingestellt.
`emp_label` ist ein Label, da macht ein get keinen Sinn. Man muß auch nicht alles an Namen binden, wenn man es später nicht mehr braucht.

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk
from functools import partial
import smtplib
from email.message import EmailMessage

def senden(recipient, message):
    email_message = EmailMessage()
    email_message.set_content(message.get())
    email_message["From"] = "Test"
    email_message["subject"] = "Test"
    email_message["to"] = recipient.get()

    server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
    server.login("", "")
    server.send_message(email_message)
    server.quit()

def main():
    window = tk.Tk()
    ttk.Label(window,
        text="Windows 3.1 Managed Applacation"
    ).pack()

    ttk.Label(window,
        text="Empfänger:"
    ).pack()
    recipient = ttk.Entry(window)
    recipient.pack()

    ttk.Label(window,
        text="Deine Nachricht:"
    ).pack()
    message = ttk.Entry(window)
    message.pack()

    ttk.Button(window,
        text="Absenden",
        command=partial(senden, recipient, message)
    ).pack()
    window.mainloop()

if __name__ == "__main__":
    main()
TorstenVoelker
User
Beiträge: 124
Registriert: Mittwoch 5. Februar 2025, 12:55

Danke für Deinen Rat und Hilfe ,
Antworten