[Python-de] dynamisch Inhalte einfuegen

Mike Abel F10 at gmx.de
Don Mar 31 21:11:57 CEST 2005


Hallo Liste,

habe bei folgendem Programmauszug das Problem den dynamisch erzeugten
Textwidgets dynamisch Inhalte hinzuzufügen.

Die Daten stehen in einem Dictionary als Strings zur Verfügung.

Die Erzeugung der Textwidgets gelingt, aber beim zuweisen der Inhalte
schlägt der Fehlerteufel zu.

Meine Frage:
Hat jemand Erfahrung bei ähnlichen Problemstellungen (dynamische
Erzeugung von Widgets und deren Handling) und deren Lösung?
Wie kann man untenstehendes Problem lösen?

Gruß Mike


#! /usr/bin/env python

import Tkinter
from Tkconstants import *

tk = Tkinter.Tk()
tk.geometry("500x250+0+0")
menubar = Tkinter.Menu(tk)

Master_d = {}
Master_d[1] = "e"
Master_d[2] = "f"
Master_d[3] = "g"


def view_db():
    top_view = Tkinter.Toplevel()
    top_view.geometry("1024x768+0+0")

    # Textwidgets erzeugen
    for i in range(1,4):
        exec "text_" + str(i) + "= Tkinter.Text(top_view,height=2)"
        exec "text_" + str(i) + ".pack()"

    # Inhalte zuweisen
    for i in range(1,4):
        m = Master_d[i]
        exec "text_" + str(i) + ".insert(\"1.0\"," + m + ")"


viewmenu = Tkinter.Menu(menubar, tearoff=0)
viewmenu.add_command(label=" view ", command=view_db)
menubar.add_cascade(label="View", menu=viewmenu, underline=0)
tk.config(menu=menubar)
tk.mainloop()



Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.3/lib-tk/Tkinter.py", line 1345, in __call__
    return self.func(*args)
  File "/home/mike/d.py", line 23, in view_db
    exec "text_" + str(i) + ".insert(\"1.0\"," + m + ")"
  File "<string>", line 1, in ?
NameError: name 'e' is not defined