wieso bekomme ich hier ein leeres Array?
ich möchte gerne im meinem Gui (Tkinter) ein Text ausgeben, was ich im "entry" eingebe. Doch leider bekomme ich immer ein leeres Array. Wieso ist das so? Ich bin ein Anfänger in python. Wie kann ich es so machen, dass ich statt "[' ']" den Text bekomme, was ich im entry getippt habe?
word_input= StringVar(root)
actions = np.array([word_input.get()])
def createFile():
print(word_input) # Hier gibt es das aus: "PY_VAR0"
print(word_input.get()) # Hier gibt exakt den text aus was ich zuvor eingegeben habe.
print(actions) # Dies gibt nur "['']" aus
root = Tk()
entry = Entry(root, width=5, textvariable=word)
entry.pack(side="left")
root.mainloop()
2 Antworten
Du musst das .get() aufrufen nachdem der mainloop läuft. Zum Beispiel per Funktion.
Zu dem Zeitpunkt wo das .get() bei dir ausgeführt wird ist das Textfeld noch leer.
Bau dir einen Trigger ein, der kenntlich macht, wann der Nutzer seine Eingabe vorgenommen hat (das könnte z.B. ein Buttonklick sein) und lies den Feldwert erst dann aus. Direkt zu Programmstart ist das Textfeld natürlich noch leer.
Beispiel:
import tkinter as tk
def printText():
print(input.get())
root = tk.Tk()
input = tk.Entry(root)
input.pack()
button = tk.Button(root, text="Print text", command=printText)
button.pack()
root.mainloop()
Hier findest du noch ein anderes Beispiel, welches OOP nutzt und die Eingabe in einem Label ausgibt.
Vieln dank. Hab es nunr raus. Hab eine seperates Funktion erstellt und diese mit return ausgegeben.