Advertisement
DeaD_EyE

Tkinter Button Entry StringVar callback

Jun 7th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.45 KB | None | 0 0
  1. from functools import partial
  2. from tkinter import (
  3.     Tk, StringVar,
  4. )
  5. from tkinter.ttk import (
  6.     Button, Label, Entry,
  7. )
  8.  
  9.  
  10. # Callback mit partial
  11. # pfunc = partial(ausgabe, 42)
  12. # pfunc()
  13.  
  14.  
  15. # Oder mitels lambda
  16. # f = lambda: ausgabe(variable)
  17. # f()
  18.  
  19.  
  20. def ausgabe(variable):
  21.     print('Instanz:',variable, 'Typ:', type(variable))
  22.     text = variable.get()
  23.     if text:
  24.         print('Text:', text)
  25.     else:
  26.         print('Entry is leer')
  27.  
  28.  
  29. def make_gui():
  30.     root = Tk()
  31.     root.title('Titel')
  32.     variable = StringVar()
  33.     Label(root, text='').pack()
  34.     etr = Entry(root, textvariable=variable)
  35.     etr.pack()
  36.     Button(root, text='Übertragen (partial)', command=partial(ausgabe, variable)).pack()
  37.     # wenn der Button gedrückt wird, wird commad ausgeführt
  38.     # command übergibt der Funktion keine Argumente!
  39.     # mit partial oder lambda lässt sich das aber erweitern
  40.     Button(root, text='Übertragen (lambda)', command=lambda: ausgabe(variable)).pack()
  41.     # und hier übergebe ich anstatt die Variable
  42.     # die Instanz etr der Klasse Entry
  43.     # da die Klasse Entry auch die Methode get hat, muss an dem Code
  44.     # in der Ausgabefunktion auch keine Unterscheidung stattfinden
  45.     Button(root, text='Übertragen (direkt)', command=lambda: ausgabe(etr)).pack()
  46.     Button(root, text='Beenden', command=root.destroy).pack()
  47.     return root
  48.  
  49.  
  50. if __name__ == '__main__':
  51.     root = make_gui()
  52.     root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement