ich versuche mit mehreren Optionmenues zu arbeiten, wobei sich die Inhalte jedoch
aendern sollen.
Folgendes Minimalbeispiel zeigt das Problem:
Wenn ich das obere Menu aendere wird eine Funktion aufgerufen (change_second_optionmenu),
die den Inhalt des unteren Optionmenues aendern soll.
Jedoch wird nur der default Wert (c_01) gesetzt, rolle ich jedoch das Optionmenu auf,
sehe ich immer noch den alten Inhalt (b_01, b_02).
Was muss ich da tun, dass er den neuen Inhalt auch sieht?
Ich definier doch self.option_03_list in der Funktion, aber das scheint nicht zu reichen.
Code: Alles auswählen
#!/usr/bin/env python
import Tkinter as tk
import string, re, os, sys, subprocess
class MyApplication():
def __init__(self, master):
frame_entries = tk.LabelFrame(master)
option_01_list = ["a_01","a_02"]
self.option_01_var = tk.StringVar(frame_entries)
self.option_01_var.set(option_01_list[0])
self.option_01 = tk.OptionMenu(frame_entries,self.option_01_var, \
*option_01_list, command=self.change_second_optionmenu)
self.option_03_list= ["b_01","b_02"]
self.option_03_var = tk.StringVar(frame_entries)
self.option_03_var.set(self.option_03_list[0])
self.option_03 = tk.OptionMenu(frame_entries,self.option_03_var, \
*self.option_03_list)
self.option_01.grid(row=0, column=1)
self.option_03.grid(row=2, column=1)
frame_entries.grid( row=0, column=0)
def change_second_optionmenu(self, *arg):
self.option_03_list= ["c_01","c_02"]
self.option_03_var.set(self.option_03_list[0])
# ------------------------------------------------------------------------------
if __name__ == "__main__":
root = tk.Tk()
root.geometry("200x200")
root.config(background="#123456")
root.option_add('*font',("courier",8,"bold"))
root.title("lsf_submitting")
display = MyApplication(root)
root.mainloop()