Seite 1 von 1
Radiobutton
Verfasst: Freitag 29. August 2014, 18:27
von Eisi
Hallo zusammen,
ich glaube ich habe gerade einen Hänger. Ich möchte 3 Radiobuttons einfügen in einer Gruppe. Ich will einen Radiobutton aktivieren und wenn ich dann in einem Entryfeld etwas eingebe und Enter drücke, das er die vom Radiobutton definierte funktion ausführt. Bei einem anderen Radio natürlich eine andere Funktion. Ich denke es ist pups einfach aber ich bekomme es gerade nicht hin xD
Re: Radiobutton
Verfasst: Freitag 29. August 2014, 19:01
von /me
Bitte stelle solche Fragen im passenden Unterforum. Wir haben keine Ahnung, von welchem GUI-Toolkit du überhaupt redest.
Re: Radiobutton
Verfasst: Freitag 29. August 2014, 19:02
von Eisi
Oh sorry hatte nicht auf die Unterforen geachtet
Ich bin bei tkinter
Re: Radiobutton
Verfasst: Freitag 29. August 2014, 19:23
von BlackJack
@Eisi: Radiobuttons werden ja in Tkinter über ein Objket von einem Untertyp von `Variable` zusammengefasst über das man dann die aktuelle Auswahl ermitteln kann. Da könnte man eine `IntVar` eine Zahl als Wert nehmen die je nach Radiobutton die Werte 0 bis 2 annimmt. Dann packst Du die drei Funktionen in eine Liste un verwendest den Zahlenwert als Index um die passende auszuwählen.
Edit:
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf-8
import Tkinter as tk
from functools import partial
from operator import methodcaller
def change_text(function, entry):
text = function(entry.get())
entry.delete(0, tk.END)
entry.insert(0, text)
def main():
root = tk.Tk()
method_names = ['lower', 'upper', 'capitalize']
functions = [partial(change_text, methodcaller(m)) for m in method_names]
variable = tk.IntVar(root, value=0)
for i, text in enumerate(method_names):
tk.Radiobutton(root, text=text, value=i, variable=variable).pack()
entry = tk.Entry(root)
entry.pack()
tk.Button(
root, text='Apply', command=lambda: functions[variable.get()](entry)
).pack()
root.mainloop()
if __name__ == '__main__':
main()
Re: Radiobutton
Verfasst: Freitag 29. August 2014, 20:46
von Eisi
Vielen Dank schonmal. Werde mich morgen da mal durcharbeiten (muss es ja dann auch verstehen)