Ich versuche, eine Funktion zu erstellen, die ein tkinter-Fenster öffnet, so dass der Benutzer die Position von 2 Punkten eingeben kann. Ähnlich wie bei Matlabs Eingabe-ID Funktion.Eingabedialogfeld auf Python mit tkinter
Die "GUI" hat eine Schaltfläche, die beim Klicken die "Eingabebox" schließt und die Punkte erhält.
Bis jetzt konnte ich das Fenster erstellen, aber ich kann die Punkte nicht abrufen. Wenn ich anstelle zurückgeben wähle ich Drucken die Werte, das wird ausgeführt.
Kann mir jemand sagen, was mit dem Code falsch ist?
import tkinter as tk
root=tk.Tk() # this will create the window
def get_value(event):
fpoint=int(entry1.get()) # Gets point 1
lpoint=int(entry2.get()) # Gets point 2
points=[fpoint,lpoint]
root.destroy() # destroys Gui
return(points) # Gets the points
box1=tk.Label(root, text="First point") # Label of box 1
entry1=tk.Entry(root) # Box 1
box2=tk.Label(root, text="Last point") # Label of box 2
entry2=tk.Entry(root) # box 2
Done_button=tk.Button(root, name="done") #Button to terminate the "gui"
Done_button.bind("<Button-1>",get_value) # Run function "get_value" on click
box1.grid(row=1, sticky="W",padx=4) # position of label for box1
entry1.grid(row=1,column=1,sticky="E", pady=4) # position of box 1
box2.grid(row=2, sticky="W",padx=4) # position of label for box2
entry2.grid(row=2,column=1,sticky="E", pady=4) # position of box2
Done_button.grid(row=3,column=1) # position of "button
root.mainloop()
Event-Handler können nicht zurückkehren. Wohin sollen sie zurückkehren? Stattdessen müssen Sie den Status ändern. Am besten nicht global. Sie verwenden auch unnötigerweise bind, wo Sie einfach das Befehlsargument für die Schaltfläche verwenden könnten. – deets