Menü-Aktualisierung und Bilder im Toplevel
Verfasst: Donnerstag 14. Januar 2010, 14:46
Hallo zusammen,
ich habe eine Frage zum dynamischen Ändern eines Menüs: Durch postcommand ist ja möglich, die Einträge zu verändern. Allerdings würde ich gerne das Menü direkt nach dem Auswählen eines Menüpunktes ggf. anders darstellen (in einer anderen Sprache) Gibt es eine Möglichkeit, dies per event zu machen? Ich bin leider zu keiner Lösung gekommen und würde mich über Anregungen freuen. Der Code folgt weiter unten.
Gleichzeitig habe ich ein anderes Problem, das ebenfalls in dem Code unten geschieht: Ich öffne ein weiteres Fenster durch den Menüeintrag "Impressum". Dort kann ich Labels darstellen aber scheinbar keine Bilder. Kann mir jemand sagen, was ich dort übersehen habe?
Besten Dank schonmal und hier kommt der Code
[/code]
ich habe eine Frage zum dynamischen Ändern eines Menüs: Durch postcommand ist ja möglich, die Einträge zu verändern. Allerdings würde ich gerne das Menü direkt nach dem Auswählen eines Menüpunktes ggf. anders darstellen (in einer anderen Sprache) Gibt es eine Möglichkeit, dies per event zu machen? Ich bin leider zu keiner Lösung gekommen und würde mich über Anregungen freuen. Der Code folgt weiter unten.
Gleichzeitig habe ich ein anderes Problem, das ebenfalls in dem Code unten geschieht: Ich öffne ein weiteres Fenster durch den Menüeintrag "Impressum". Dort kann ich Labels darstellen aber scheinbar keine Bilder. Kann mir jemand sagen, was ich dort übersehen habe?
Besten Dank schonmal und hier kommt der Code
Code: Alles auswählen
# -*- coding: utf-8 -*-
from Tkinter import *
import Image, ImageTk
languageMenu = { 'de':u'Sprache',
'el':u'EL_Lang',
'en':u'Language',
'fr':u'Langue',
'ro':u'Limba?',
'tr':u'TR_Lang'
}
root = Tk()
root.geometry('800x600')
class MainDialog:
def __init__(self, parent):
self.myParent = parent
self.myFrame = Frame(parent, bg='#002244')
self.myFrame.grid()
self.language = 'en'
def updateLanguage(self, newLanguage):
self.language = newLanguage
md = MainDialog(root)
multiling_menu = 'Language'
def updateMenu():
global multiling_menu
if md.language == 'de':
multiling_menu = 'Sprache'
elif md.language == 'en':
multiling_menu = 'Language'
elif md.language == 'el':
multiling_menu = 'EL_Lang'
elif md.language == 'fr':
multiling_menu = 'Langue'
elif md.language == 'ro':
multiling_menu = 'RO_Lang'
elif md.language == 'tr':
multiling_menu = 'TR_Lang'
menu.entryconfig(1, label=languageMenu[md.language])
menu.update()
class InfoDialog():
def __init__(self, parent):
top = self.top = Toplevel(parent)
lang_label=""
if md.language == 'de':
lang_label = 'Sprache'
elif md.language == 'en':
lang_label = 'Language'
elif md.language == 'el':
lang_label = 'EL_Lang'
elif md.language == 'fr':
lang_label = 'Langue'
elif md.language == 'ro':
lang_label = 'RO_Lang'
elif md.language == 'tr':
lang_label = 'TR_Lang'
Label(top, text=lang_label).pack()
info_img1 = Image.open('.\\media\\1_LAND.gif')
info_pimg1 = ImageTk.PhotoImage(info_img1)
Label(self.top, image=info_pimg1, bg='#002244').pack()
menu = Menu(root, postcommand=updateMenu)
root.config(menu=menu)
languagemenu = Menu(menu, tearoff=0)
menu.add_cascade(label=multiling_menu, menu=languagemenu)
languagemenu.add_command(label='Deutsch', command = lambda
arg1= 'de': md.updateLanguage(arg1))
languagemenu.add_command(label=u'EL', command = lambda
arg1= 'el': md.updateLanguage(arg1))
languagemenu.add_command(label='English', command = lambda
arg1= 'en': md.updateLanguage(arg1))
languagemenu.add_command(label=u'Fran\xe7ais', command = lambda
arg1= 'fr': md.updateLanguage(arg1))
languagemenu.add_command(label=u'Romana', command = lambda
arg1= 'ro': md.updateLanguage(arg1))
languagemenu.add_command(label=u'Türk\xe7e', command = lambda
arg1= 'tr': md.updateLanguage(arg1))
menu.add_command(label='Impressum', command= lambda
arg1= root: InfoDialog(arg1))
root.mainloop()