Seite 1 von 1

command im OptionMenu

Verfasst: Montag 24. April 2006, 17:46
von Mawilo
Hallo,

wie bekomme ich die command-Funktion in ein Optionsmenü, wenn ich auch die Auswahl des Menüs variabel gestalten muss?

Die einfache Version ohne veränderbare Auswahl:

Code: Alles auswählen

from Tkinter import *

def test(e):
    print 'mach was'

root = Tk()
var_1 = StringVar()
om = OptionMenu(root,var_1,'test1','test2','test3',command=test)
om.pack()
root.mainloop()

Version mit veränderbarer Auswahl:

Code: Alles auswählen

from Tkinter import *

def test(e):
    print 'mach was'

tup = 'test4','test5','test6'
root = Tk()
var_1 = StringVar()
om = apply(OptionMenu,(root,var_1,)+tuple(tup))
om.pack()
root.mainloop()
Nur bekomme ich in der zweiten Version das command = test nicht reingebastelt. Hat da jemand einen Rat für mich?

Stephan

Verfasst: Montag 24. April 2006, 20:25
von jAN
ich hab zwar keine ahnung, wie apply funktioniert...
ich denk mal so könnte es funktionieren:
dü übergibst nen parameter mit nem dictionairy... in der art: {"command":test}

Verfasst: Montag 24. April 2006, 22:54
von BlackJack
`apply` sollte nicht mehr verwendet werden (siehe ``help(apply)``). Als ersatz gibt's die `*` Syntax für "Positions-Argumente" und `**` für Schlüssewort-Argumente. Damit ginge es dann so:

Code: Alles auswählen

import Tkinter as tk

def test(event):
    print 'Hello'

data = ('test4', 'test5', 'test6')
root = tk.Tk()
var = tk.StringVar()
options = tk.OptionMenu(root, var, command=test, *data)
options.pack()
root.mainloop()

Verfasst: Dienstag 25. April 2006, 17:10
von Mawilo
Vielen Dank, das funktioniert wunderbar. Das mit den * war mir noch gar nicht bekannt bzw. habe ich noch nirgends gelesen.

Stephan

Verfasst: Sonntag 21. Mai 2006, 16:56
von oscar15
wie kann man für verschiedene klicks verschiedene ausgaben machen?

Verfasst: Sonntag 21. Mai 2006, 22:51
von BlackJack
Wie soll man so eine Frage beantworten können?

Verfasst: Montag 22. Mai 2006, 13:27
von oscar15
hehe stimmt wohl!

naja ich hab folgendes Prob:

Ich kann wie oben beschrieben das machen, doch dann führt er alle Auswahlmöglichkeiten mit dem selben befehl aus!

Ich hoffe das hilft, danke

Flo

Verfasst: Montag 22. Mai 2006, 14:33
von Mawilo
Du kannst immer nur die eine definierte Funktion aufrufen. Dort hast du aber die Möglichkeit, in Abhängigkeit der gesetzten Variable unterschiedliche Dinge durchzuführen.

Code: Alles auswählen

import Tkinter as tk 

def test(event):
    if var.get() == 'test4':
        print 'mach was'
    elif var.get() == 'test5':
        print 'mach was anderes'
    else:
        print 'mach nichts'

data = ('test4', 'test5', 'test6') 
root = tk.Tk() 
var = tk.StringVar() 
options = tk.OptionMenu(root, var, command=test, *data) 
options.pack() 
root.mainloop()
Stephan

Verfasst: Montag 22. Mai 2006, 15:10
von oscar15
danke vielmals!^^