ich habe mir ein universell einsetzbares Eingabefenster für beliebige Werte programmiert. Die Funktion ist vorhanden, allerdings würde ich gerne den Aufruf in sofern vereinfachen, dass ich nur noch eine Zeile dafür benötige. Siehe dazu die Kennzeichnung im Code:
Code: Alles auswählen
from tkinter import *
class TkInputBox():
# Initalisierung
def __init__(self, parent, fenstertitel, fenstertext):
top = self.top = Toplevel(parent)
width = 300
height = 80
ws = fenster.winfo_screenwidth()
hs = fenster.winfo_screenheight()
xpos = ws / 2 - width / 2
ypos = hs / 2 - height / 2
top.geometry("%dx%d+%d+%d" % (width, height, xpos, ypos))
self.top.resizable(0,0)
self.top.title(fenstertitel)
self.top.grab_set()
self.Label = Label(top, text=fenstertext)
self.Label.pack(anchor="nw", padx=5)
self.eingabewert = Entry(top, width=60)
self.eingabewert.focus_set()
self.eingabewert.pack(padx=5, anchor="w")
self.AbbruchButton = Button(top, text='Abbrechen', command=self.abbruch)
self.AbbruchButton.pack(side="right", pady=5)
self.UebernehmenButton = Button(top, text='Übernehmen', command=self.uebernehmen)
self.UebernehmenButton.pack(side="right", padx=0)
# Eingabebox abbrechen
def abbruch(self):
self.top.destroy()
# Wert aus Eingabebox übernehmen
def uebernehmen(self):
self.callback(self.eingabewert.get())
self.top.destroy()
# Callback-Funktion anlegen
def set_callback(self, a_func):
self.callback = a_func
if __name__=="__main__":
# Vereinfachung von hier an bis ...
def getEingabe():
eingabeFenster = TkInputBox(fenster, "Eingabefenster...", "Hier steht der Hilfetext...")
eingabeFenster.set_callback(WertEingabeBox)
def WertEingabeBox(wert = ''):
label['text'] = wert
# .. hier hin (Vereinfachung auf eine Zeile)
fenster = Tk()
fenster.title("Beispiel für Eingabebox")
label = Label(fenster, text='Hier erscheint die Eingabe der Eingabebox.')
label.pack()
button = Button(fenster,text='Eingabebox aufrufen', command=getEingabe)
button.pack()
fenster.mainloop()
Code: Alles auswählen
wert = TkInputBox(fenster, "Eingabefenster...", "Hier steht der Hilfetext...")
Viele Grüße
snowflake