Radiobutton

Fragen zu Tkinter.
Antworten
Eisi
User
Beiträge: 62
Registriert: Sonntag 24. November 2013, 21:59

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
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Bitte stelle solche Fragen im passenden Unterforum. Wir haben keine Ahnung, von welchem GUI-Toolkit du überhaupt redest.
Eisi
User
Beiträge: 62
Registriert: Sonntag 24. November 2013, 21:59

Oh sorry hatte nicht auf die Unterforen geachtet :(

Ich bin bei tkinter
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()
Eisi
User
Beiträge: 62
Registriert: Sonntag 24. November 2013, 21:59

Vielen Dank schonmal. Werde mich morgen da mal durcharbeiten (muss es ja dann auch verstehen)
Antworten