Hallo!
Ich bin noch ziemlich neu in der Python Welt und steh gerade vor einem kleinen Problem.
Ich möchte ein Programm schreiben mit der man einen "Seminarschein" erstellen kann.
Sas Seminar-Verzeichnis (eine *.dat Datei) lade ich mit File_o = codecs.open usw ein.
Der Inhalt der Datei wird dann als Tree in einem wx.TreeCtrl geschoben.
Das klappt soweit auch.
Nun wollte ich das mir die Doppelgeklickten Tagungen in ein StaticText Fenster geschrieben werde (Welches ich zur Erstellung des Scheines dann zusammen mit den Feldern: Name/Nachname auslese und speicher).
Das Auslesen (Name, Nachname) und speichern funktioniert nur wie bekomme ich die "Auswahl" in das dafür Vorgesehende Feld?
Kann mir da wer weiterhelfen?
Danke im Vorraus!!!!
Auswahl auslesen und abspeichern
Sorry das ich mich so lange nicht gemeldet habe.
Also ich habe ingesamt 1 fenster. das Fenster hat links einen Tree (wo die auszuwählenden Seminare in Gruppen aufgelistet sind), rechts oben habe ich ein paar zeilen wo man name usw des Benutzers eingeben kann. Da drunter habe ich ein Feld(textctrl) in dem die Auswahl vom Tree angezeigt werden soll.
Das Auslesen der Auswahl habe ich jetzt mit pydata hinbekommen.
Da mir die Auswahl aber wegen dem textctrl immer überschrieben wurde möchte ich daraus jetzt eine listctrl machen.
Kann mir vllt jemand sagen wie ich die Auswahl ins Auswahlfenster "adde"?
Also ich habe ingesamt 1 fenster. das Fenster hat links einen Tree (wo die auszuwählenden Seminare in Gruppen aufgelistet sind), rechts oben habe ich ein paar zeilen wo man name usw des Benutzers eingeben kann. Da drunter habe ich ein Feld(textctrl) in dem die Auswahl vom Tree angezeigt werden soll.
Das Auslesen der Auswahl habe ich jetzt mit pydata hinbekommen.
Da mir die Auswahl aber wegen dem textctrl immer überschrieben wurde möchte ich daraus jetzt eine listctrl machen.
Kann mir vllt jemand sagen wie ich die Auswahl ins Auswahlfenster "adde"?
- martin101986
- User
- Beiträge: 85
- Registriert: Montag 3. Dezember 2007, 19:15
- Wohnort: Steiermark, Österreich
Hallo,
ich hoffe ich habe dich richtig verstanden. Die wxList Klasse verügt über eine Methode Append. Mit dieser kannst du Objekte an die Liste anhängen.
Grüße
Martin
ich hoffe ich habe dich richtig verstanden. Die wxList Klasse verügt über eine Methode Append. Mit dieser kannst du Objekte an die Liste anhängen.
Grüße
Martin
Also mit InsertStringItem schaffe ich es nun das er mir etwas in die Zeile schreibt. Allerdings erscheint da nicht das gewählte sondern:"<wx._controls.TreeItemId; proxy of....................."
Was mach ich jetzt wieder falsch?
Was mach ich jetzt wieder falsch?

damit das helfen einfacher ist: hier etwas code
Edit: Sorry hatte vergessen Python auszuwählen. Nu ists in Farbe
Code: Alles auswählen
#------------------------------------------------------------------------------
class MainFrame(wx.Frame):
#------------------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Seminarschein Drucker', size=(650, 480), style=wx.CAPTION|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.SYSTEM_MENU)
panel = wx.Panel(self, -1)
#-----------------------------------------------------------------------------
# Textfelder erstellen
#-----------------------------------------------------------------------------
self.NachnameLabel = wx.StaticText(panel, -1, u"Nachname:",(280,05))
self.Nachname=wx.TextCtrl(panel, -1, "", (280,20), (100,-1))
self.VornameLabel = wx.StaticText(panel, -1, u"Vorname:",(400,05))
self.Vorname=wx.TextCtrl(panel, -1, "", (400,20), (100,-1))
self.MatrikelLabel = wx.StaticText(panel, -1, u"Matrikelnummer:",(520,05))
self.Matrikel=wx.TextCtrl(panel, -1, "", (520,20), (100,-1))
self.gewaehltLabel = wx.StaticText(panel, -1, u"Gewählte Veranstaltungen",(280,60))
#self.gewaehlt=wx.TextCtrl(panel, -1, "", (280,75), (300,300))
self.gewaehlt=wx.ListCtrl(panel,-1,(280,75),(300,300),style=wx.LC_REPORT| wx.BORDER_NONE|wx.LC_SORT_ASCENDING| wx.LC_SINGLE_SEL)
self.gewaehlt.InsertColumn(0,"Wahl")
self.gewaehlt.SetColumnWidth(0, 250)
count=0
#-----------------------------------------------------------------------------
# Einlesen der im Verzeichnis vorhandenen Datei und Erstellung des Trees
#-----------------------------------------------------------------------------
File_o = codecs.open("tagungen.dat", "rU", "utf-8")
TListe_o = eval(File_o.read())
File_o.close()
self.TagungsTree = wx.TreeCtrl(panel,-1, (5,05), (250,380))
TagungsTreeroot = self.TagungsTree.AddRoot(u"Seminarplan")
self.TagungsTree.SetPyData(TagungsTreeroot,"TREEROOT")
for x in TListe_o:
currentkat=self.TagungsTree.AppendItem(TagungsTreeroot,x[0].decode("utf-8"))
for y in x:
if len(y[0])>1:
gewaehlt=self.TagungsTree.AppendItem(currentkat,y[0].decode("utf-8")+" ("+y[1].decode("utf-8")+")")
self.TagungsTree.SetPyData(gewaehlt,x[0].decode("utf-8")+"|"+y[0].decode("utf-8")+"|"+y[1].decode("utf-8"))
self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnTreeRightClick)
self.TagungsTree.Expand(TagungsTreeroot)
#-----------------------------------------------------------------------------
#Öffnen einer anderen Datei
#-----------------------------------------------------------------------------
def OnOpenFormButtonClick(self, event):
self.TagungsTree.SetLabel("")
self.directory = os.getcwd()
self.open = wx.FileDialog(self, u'Bitte Datei zum Laden wählen', self.directory, '', '*.dat', wx.FD_OPEN | wx.FD_CHANGE_DIR)
if self.choose_open == wx.ID_OK:
try:
wx.MessageBox(u"Öffnen erfolgreich!", "Info", wx.OK | wx.ICON_INFORMATION)
except IOError, error:
wx.MessageBox("Fehler:\n" + str(error), "Info", wx.OK | wx.ICON_INFORMATION)
#----------------------------------------------------------------------------
# Beim Rechtsklick auf den Tree Auswahl speichern
#----------------------------------------------------------------------------
def OnTreeRightClick(self, event):
item = event.GetItem()
self.gewaehlt.InsertStringItem(0,str(item))
#----------------------------------------------------------------------------
# Reset des Formulars
#----------------------------------------------------------------------------
def OnResetFormButtonClick(self, event):
self.Nachname.SetLabel("")
self.Vorname.SetLabel("")
self.Matrikel.SetLabel("")
self.gewaehlt.SetLabel("")
self.TagungsTree.CollapseAll() # Zusammenklappen des Trees
self.TagungsTree.Expand(self.TagungsTree.GetRootItem())
#-----------------------------------------------------------------------------
if __name__ == '__main__':
#------------------------------------------------------------------------------
app = wx.PySimpleApp()
MainFrameInstance=MainFrame()
MainFrameInstance.Show()
app.MainLoop()
Edit: Sorry hatte vergessen Python auszuwählen. Nu ists in Farbe
Zuletzt geändert von bady am Mittwoch 13. Januar 2010, 19:14, insgesamt 1-mal geändert.
Es gibt einen Button, das steht Python drauf. Damit erscheint das ganze auch in Farbe 

[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Mit dieser Änderung klappt es.
Aber wie kann ich das Listctrl auslesen um die Daten z.b. in einer txt Datei zu speichern?
mit nem Textctrl geht es ja so:
Code: Alles auswählen
def OnTreeRightClick(self, event):
item = event.GetItem()
test = self.TagungsTree.GetItemData(item).GetData()
self.gewaehlt.InsertStringItem(0,test)
Aber wie kann ich das Listctrl auslesen um die Daten z.b. in einer txt Datei zu speichern?
mit nem Textctrl geht es ja so:
Code: Alles auswählen
data+= "\nMatrikelnummer: "+self.Matrikel.GetLabel()