bei mir wurde die Seite nicht geladen, um auf Dein Posting zu antworten, darum der neue Thread.
Dein Codeausschnitt ist zwar umfangreich, enthält aber viel zu wenig Angaben, um das Problem nachvollziehen zu können.
Probiere doch mal folgenden Code als Grundgerüst:
Code: Alles auswählen
# -*- encoding: iso-8859-1 -*-
import os
import Tkinter as TK
###############
## Konstanten
sFONT = "Courier 8 bold"
def highlight_button(sButton):
sButton.config(fg="red")
def reset_button(sButton):
sButton.config(fg="black")
class Tabelle(TK.Toplevel):
lKeys=["Fahrzeugart", "Preis", "Kraftstoffart",
"Kilometer", "Leistung", "Farbe", "Klima",
"Erstzulassung", "Anbieter", "Link"]
def __init__(self, wMaster, lInhalt, sName="unbenannt"):
TK.Toplevel.__init__(self, wMaster)
self.title(sName)
self._lTableVars = [[TK.StringVar() for x in range(len(self.lKeys))] for y in range(len(lInhalt))]
self._create_table(iZeilenAnzahl=len(lInhalt))
self.update_table(lInhalt)
def _create_table(self, iZeilenAnzahl):
"Generiert die Tabelle"
iSpalten = len(self.lKeys)
iZeilen = iZeilenAnzahl
for iSpalte in range(1, iSpalten+1):
TK.Label(self, text=self.lKeys[iSpalte-1], font=sFONT,
relief=TK.RIDGE, bd=1).grid(row=0, column=iSpalte, sticky=TK.NSEW, ipadx=8)
for iZeile in range(1, iZeilen+1):
TK.Label(self, text=str(iZeile), font=sFONT,
relief=TK.RIDGE, bd=1).grid(row=iZeile, column=0, sticky=TK.NSEW, ipadx=8)
for iZeile in range(1, iZeilen+1):
for iSpalte in range(1, iSpalten+1):
TK.Label(self, textvariable=self._lTableVars[iZeile-1][iSpalte-1], bg="#fff", font=sFONT,
relief=TK.RIDGE, bd=1).grid(row=iZeile, column=iSpalte, sticky=TK.NSEW, ipadx=8)
def update_table(self, lInhalt):
"Füllt die Daten des Dictionaries in die Tabelle ein"
for iZeile in range(min(len(self._lTableVars),
len(lInhalt))):
dZeile = lInhalt[iZeile]
for iSpalte in range(len(self.lKeys)):
sKey = self.lKeys[iSpalte]
sValue = dZeile.get(sKey, " "*5)
self._lTableVars[iZeile][iSpalte].set(sValue)
class HauptProgramm(TK.Tk):
def __init__(self):
TK.Tk.__init__(self)
self.title("Hauptfenster")
self._create_widgets()
def _create_widgets(self):
self._create_menu()
# Frame, um die Größe zu definieren
self.wFrame = TK.Frame(self, width=300, height=200)
self.wFrame.grid()
def _create_menu(self):
wMenuZeile = TK.Menu(self)
wMenuZeile.add_command(label="Exit", command=self._exit)
self.config(menu=wMenuZeile)
def _exit(self):
self.quit()
self.destroy()
lDicts = [{'Erstzulassung': '04/00',
'Fahrzeugart': 'Gebrauchtfahrzeug',
'Klima': 'Klimaautomatik',
'Farbe': 'schwarz'},
{'Erstzulassung': '02/01',
'Fahrzeugart': 'Neuwagen',
'Preis': '7800 Euro'}]
wHauptProgramm = HauptProgramm()
wTabelle = Tabelle(wHauptProgramm, lDicts, "Beispiel 1")
wHauptProgramm.mainloop()
Bei Unklarheiten einfach nachfragen.
Grüße,
Michael