command im OptionMenu

Fragen zu Tkinter.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

command im OptionMenu

Beitragvon Mawilo » Montag 24. April 2006, 17:46

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
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Beitragvon jAN » Montag 24. April 2006, 20:25

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}
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
BlackJack

Beitragvon BlackJack » Montag 24. April 2006, 22:54

`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()
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Dienstag 25. April 2006, 17:10

Vielen Dank, das funktioniert wunderbar. Das mit den * war mir noch gar nicht bekannt bzw. habe ich noch nirgends gelesen.

Stephan
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Sonntag 21. Mai 2006, 16:56

wie kann man für verschiedene klicks verschiedene ausgaben machen?
BlackJack

Beitragvon BlackJack » Sonntag 21. Mai 2006, 22:51

Wie soll man so eine Frage beantworten können?
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Montag 22. Mai 2006, 13:27

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
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Beitragvon Mawilo » Montag 22. Mai 2006, 14:33

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
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Beitragvon oscar15 » Montag 22. Mai 2006, 15:10

danke vielmals!^^

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder