dieser (der-hier) beitrag wird morgen früh 7:30 editiert mit einer versuchsweise vollständigen, leichten erklärung, denn jetzt ist erstma schicht im schacht
(morgen 4:30Uhr raus und ne arbeit geschrieben.. *löl*

)
bis morgen!
//edit:
ok, nochmal, als erstes mal die frage:
hats denn geklappt?(das beispiel)
der erste fehler, den du gemacht hast, lag - glaub ich nur daran, dass du die Klassen instanzen nicht gespeichert hast... - da bin ich mir aber wirklich nicht genau sicher
ansich dürfte das grundkonzept von r2d2 stimmen...
das GRUNDPRINZIP!!
in tix wurden einfach neue widgets geschrieben, indem man zb. ein frame erzeugt hat, und dort alle für das neue widget benötigten "teilwidgets" reingehauen hat
Code: Alles auswählen
from Tkinter import *
class New_Widget(Frame):
def __init__(self, master=None, **opts):
Frame.__init__(master, opts)
self.g=Button(self, text="knopf")
self.g.pack()
self.l=Label(self, text="label")
self.l.pack()
root=Tk()
a=New_Widget(root)
a.pack()
root.mainloop()
so, beim dritten posting - der fehler wird nun etwas komplizierter:
ich habe oben mit absicht immer "self." vor die widget-namen geschrieben, damit es jetzt einfacher wird
g ist also ein objekt von a...
also: a.g
genauso, glaub ich, funktioniert es auch mit den Tix-widgets:
Oberwidget.Unterwidget.Funktion_von_Unterwidget()
also solltest du nicht
Mr_Snede hat geschrieben:Code: Alles auswählen
import Tix
from Tkconstants import * #wichtig - hier ist'END' usw definiert
root = Tix.Tk()
Liste = Tix.ScrolledTList(root)
for i in xrange(20):
Liste.insert(0, text=('%d' %i, 'Spalte1', 'Spalte1', 'Spalte1'))
Liste.pack()
root.mainloop()
schreiben, sondern
das eines der unterwidgets von "Liste" ansprechen!!
in meinem codebeispiel siehst du, dass ich das ganze ja mit dem widget
"ScrolledTList" gemacht habe...
ich habe auch die Tix gerade nicht auf dem Pc, um nachgucken zu können, ob TList irgendwelche "Teilwidgets" besitzt/anspricht (*sorry*)
//ab hier beginnt leider kurzform:
ScrolledTList besitzt unter anderem ein objekt namens "tlist"
dies entspricht dem Textbereich für die ScrolledTList!
also nur für dieses objekt die insert - option aufrufen:
Code: Alles auswählen
from Tix import *
root=Tk()
stl=ScrolledTList(root)
stl.tlist.insert(...) # WICHTIG: stl.TLIST.insert...
stl.pack()
root.mainloop()
was das erste argument von der insert-funktion darstellt, weiß ich gerade nicht, aber wahrscheinlich ist es der index...
das zweite argument muss ein dictionary ("{'text':'hallo, alle'}") sein, da von diesem dann zu dem key 'text' der wert gesucht wird, der dann prompt eingetragen wird.. *klar*
beim 3.post hattest du einen string statt dem dict angegeben...
da aber nur ein dict die methode ".items()" hat, konnte er die von dem string ja auch nicht finden!
(die 2.fehlermeldung)
wenn ich mich nun nicht irre, habe ich alle drei fehlermeldungen versucht zu analysieren, nimm also bitte, bitte erst mal das codestückchen von mir und probiere es einfach aus und veränder immer kleine stückchen, wenn dir auch DIESER post nix geholfen hat...
übrigens war der codeausschnitt mit dem 'locals()["hello"]="world" '
nur dazu gedacht, dass du weißt, was der befehl "_dummy..." in der Tix.py bei class ScrolledTList macht... erzeugt aus einem string ein handfestes objekt/variable - sollte es dich irgendwie verwirren, vergiss es einfach oder schreib mir ne mail oder über die private nachricht oder sonst irgendwas
ich hoffe echt, dass ich dir helfen konnte, oder dir noch helfen kann
(können ja ne komplette, ausführliche doku darüber starten)
wenn ich jetzt was vergessen oder doppelt hab: *sorry*
aber eins muss ich noch loswerden:
@joachim:
nimms nicht persönlich, aber tkconstants oder so hat NICHTS mit dem format (was auch immer du damit meinst) zu tun sondern sorgt nur dafür, dass du statt der _0_ bei .insert(...) oder statt "end" auch END schreiben kannst... dadurch, dass Tix sich Tkinter importiert, läd es gleichzeitig dieses Modul mit...
nimms mir wirklich nicht übel!
