Seite 2 von 2

Verfasst: Freitag 21. Dezember 2007, 13:35
von Brafil
Leider nicht: Ich benutze GUI und das tkFileDialog modul

Verfasst: Freitag 21. Dezember 2007, 13:37
von BlackVivi
Brafil hat geschrieben:Leider nicht: Ich benutze GUI und das tkFileDialog modul
Und was is' daran anders oO''... Am Ende kommt'n String heraus, den du überprüfen musst.

Verfasst: Freitag 21. Dezember 2007, 13:37
von Leonidas
Brafil hat geschrieben:Import is jetzt geregelt, außer Tkinter, das ist immer noch mit *
Warum? ``import Tkinter as tk`` und dann einfach alle Tkinter-namen mit ``tk.`` prefixen. So ist auch sofort ersichtlich woher die kommen und wozu die gehören.

Verfasst: Freitag 21. Dezember 2007, 13:40
von Brafil
Und ein Prog das daraus ein Runtime macht wäre auch nicht schlecht(Aber die meisten verstehe ich nicht)
PS: Ich brauche einen geeigneten Layoutmanager

Verfasst: Freitag 21. Dezember 2007, 13:56
von Leonidas
Brafil hat geschrieben:Und ein Prog das daraus ein Runtime macht wäre auch nicht schlecht(Aber die meisten verstehe ich nicht)
py2exe, cxFreeze, PyInstaller. Aber das ist eine Gelegenheit einen neuen Thread zu starten, ja?

Verfasst: Freitag 21. Dezember 2007, 17:16
von Brafil
Ich habe jetzt grid benutzt. Ist auch nicht so anders, und es zeigt die liste jetzt in einem Text-widget an, nicht in einem PopUp menü

Verfasst: Samstag 22. Dezember 2007, 10:26
von Brafil
Jetzt habe ich wieder ein Problem...
Wie kriege ich es ohne global hin, dass mydict leer wird?

Verfasst: Samstag 22. Dezember 2007, 11:11
von BlackJack
In der Doku nachlesen was Dictionaries für Methoden bieten. :-)

Save File problem

Verfasst: Samstag 22. Dezember 2007, 12:07
von Brafil
Now I have a problem again... It doesn't save or load any files...

Code: Alles auswählen

def Loadfile(): 
    """Loads a file"""
    namefile = tkFileDialog.askopenfilename(defaultextension='*.dat')

    #Tries to open the file
    try:
        fopen = open(namefile)
        mydict = pickle.load(fopen)
        fopen.close()
        #Display a message
        tkMessageBox.showinfo("Load File", "File has been loaded successfully")

    #If it can't
    except:

        #Show error message
        tkMessageBox.showerror("Error", "Couldn't open file")

    return mydict

def Savefile():
    """Saves the file"""
    
    #Choose the place where to save to
    savefiled = tkFileDialog.asksaveasfilename(defaultextension="*.dat")

    #If the name doesn't end with '.dat', add it
    if not savefiled.lower().endswith(".dat"):
        savefiled = savefiled + ".dat"
    
    fsave = open(savefiled, "w")
    pickle.dump(mydict, fsave)
    #Display a message
    tkMessageBox.showinfo("Save File", "File has

Verfasst: Samstag 22. Dezember 2007, 12:40
von Brafil
Das Prog ist fast fertig :D , nur das runtime/exe erzeugen krieg ich net hin... :?

Verfasst: Samstag 22. Dezember 2007, 14:05
von Leonidas
Brafil hat geschrieben:nur das runtime/exe erzeugen krieg ich net hin... :?
Mit der Forumssuche bekommst du eine Menge Threads zu dem Thema.

Verfasst: Samstag 22. Dezember 2007, 16:31
von gerold
Brafil hat geschrieben:nur das runtime/exe erzeugen krieg ich net hin...
Hallo Brafil!

Für ein Tkinter-Programm: Nimm py2exe http://www.py2exe.org/ und lass dir von http://xoomer.alice.it/infinity77/main/GUI2Exe.html helfen.

Für ein wxPython-Programm: Dafür kenne ich nur cx_freeze http://python.net/crew/atuining/cx_Freeze/. Mit py2exe habe ich das noch nicht versucht.

mfg
Gerold
:-)

Verfasst: Sonntag 23. Dezember 2007, 10:27
von Brafil
Der List@editor ist da! Nur speichern und laden klappt immer noch nicht, obwohl ich den code 10-mal durchgelesen habe

List@editor v1.0

Verfasst: Sonntag 23. Dezember 2007, 10:52
von BlackJack
Speichern klappt. Laden hat keinen (dauerhaften) Effekt. In der Funktion wird der lokale Name `mydict` an die geladenen Daten gebunden. Das hat natürlich keine Auswirkungen auf das Objekt, das an `mydict` auf Modulebene gebunden ist. Das müsste man leeren und mit den geladenen Daten füllen. Stichworte `clear()` und `update()`.

Verfasst: Sonntag 23. Dezember 2007, 11:05
von Brafil
ENDLICH!!! Ich habe ein App daraus gemacht.. Ohne Fehlermeldung!
Na ja... fast...

Verfasst: Sonntag 23. Dezember 2007, 11:47
von Brafil
Ich hab die gespeicherte datei test.txt angeguckt, die ich gerade überschrieben hatte, aber da stehen immer noch die Werte von vorgestern. Stimmt hier was nicht?

Code: Alles auswählen

#Choose the place where to save to
    try:
        savefiled = tkFileDialog.asksaveasfilename(defaultextension="*.txt") #Später "*.dat"

        #If the name doesn't end with '.dat', add it
        if not savefiled.lower().endswith(".dat"):
            savefiled = savefiled + ".dat"
    
        fsave = open(savefiled, "w")
        pickle.dump(mydict, fsave)
        #Display a message
        tkMessageBox.showinfo("Save File", "File has been saved successfully")

    except:
        
        tkMessageBox.showerror("Error", "Couldn't save file")
        
Ich weiß, das try-except ist falsch, aber ohne das war es genauso. Und loadfile ist auch net mehr:

Code: Alles auswählen

def Loadfile(): 
    """Loads a file"""
    namefile = tkFileDialog.askopenfilename(defaultextension='*.txt')

    #Tries to open the file
    try:
        fopen = open(namefile)
        mydict = pickle.load(fopen)
        fopen.close()
        #Display a message
        tkMessageBox.showinfo("Load File", "File has been loaded successfully")

    #If it can't
    except:

        #Show error message
        tkMessageBox.showerror("Error", "Couldn't open file")

    return mydict
PS: Ich benutze

Code: Alles auswählen

import pickle
und nicht

Code: Alles auswählen

from pickle import *
oder import pickle as pckl 
oder so ähnlich...

Verfasst: Sonntag 23. Dezember 2007, 13:28
von Leonidas
Bist du dir sicher dass das ausgeführt wird? Außerdem ist der Schreib-Modus ``wb`` und der Lese-Modus ``rb``.

Verfasst: Sonntag 23. Dezember 2007, 17:54
von Brafil
Es geht immer noch nicht...