Allgemeine Fragen zu Tkinter

Fragen zu Tkinter.
Tkinter-Einsteiger

Freitag 23. Januar 2004, 21:51

Liebe Pythonprogrammierern,
ich beschäftige mich erst seit wenigen Monaten mit Python, aber erst seit Wochen mit Tkinter. Mir wurde diese Sprache und das Modul empfohlen, um ein benutzerdefiniertes Programm mit grafischer Oberfläche zu gestalten. Allerdings gibt die Suchmaschine des Forums und auch das Internet recht wenig her, um mit Tkinter mehr erstellen zu können, als Labels, Buttons etc. Daher würde ich gerne wissen, wie ich am Besten Tkinter erlernen kann? Wichtig ist mir erstmal nur Tkinter, da die Grundvoraussetzungen von Python für mein Programm bereits vorhanden sind.
Ich wäre sehr dankbar, wenn ihr mir weiterhelfen könntet!
Tkinter-Einsteiger

Freitag 23. Januar 2004, 22:08

Ich werde heute, obwohl mein Englisch nicht das beste ist, die geposteten Links noch durcharbeiten und Fragen, auf die ich keine Antwort finde, stellen.
rogen

Samstag 24. Januar 2004, 21:48

um genauer nachzuschlage nehme ich

http://www.amazon.com/exec/obidos/tg/de ... 7?v=glance

und sonst

Objektorientierte Programmierung mit Python
Tkinter-Einsteiger

Freitag 20. Februar 2004, 17:55

Bisher verlief das Schreiben meines Programmes recht gut und da es jetzt fast fertig ist, habe ich nur drei Fragen:
1. Wie kann ich eine Setup-Datei erstellen, die mir das Programm ordnungsgemäß auf dem PC installiert?

2. Ich muss in meinem Programm mehrere .txt Dateien 'verdecken', sozusagen nur für das Programm (ein)lesbar und sichtbar machen. Der Nutzer darf diese Dateien also nicht öffnen können.

3. Habe ich hier schon einmal etwas über selbsterstellte Iconsbilder gelesen, finde aber nicht näheres darüber. Das:

root = Tk()
root.title('Eigener Titel')
root.iconbitmap('C:\Python22\Tools\idle\Icons\tk.gif')

funktioniert leider nicht!
Auch wenn ich das Bild, das ich verwenden will, vorher definiere klappt es nicht.

Ich hoffe ihr könnt mir zumindest in ein paar Fragen behilflich sein.
Gruß Tkinter-Einsteiger
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Freitag 20. Februar 2004, 18:10

hallo.

ich denke das funktioniert:

Code: Alles auswählen

root = Tk() 
root.title('Eigener Titel') 
root.iconbitmap('pfad/datei.gif') 
verwende anstatt
MacEvil
User
Beiträge: 52
Registriert: Mittwoch 21. Januar 2004, 21:40

Freitag 20. Februar 2004, 18:49

Und fehlt da nicht noch ein "root.mainloop()" ?

Link der alles abdeckt :
http://www.pythonware.com/library/tkinter/introduction/
Möge die Python-Community gedeihen
Tkinter-Einsteiger

Freitag 20. Februar 2004, 18:53

Also einen mainloop hätte ich noch nie gebraucht, aber mal schauen...

Danke Olf, aber das habe ich schon probiert hat vorhin so nicht funktioniert, werde es aber weiterhin versuchen.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Freitag 20. Februar 2004, 19:42

solange du unter idle arbeitest, gehts auch ohne mainloop(), wenn das Script auch ohne idle laufen sollte, so immer mit mainloop().

statt / oder \ besser die pfade mit os.path.join zusammenfügen.


Gruß

Dookie
Tkinter-Einsteiger

Sonntag 22. Februar 2004, 19:40

Wie sieht es mit Frage 2 und 3 aus?

1. Wie kann ich eine Setup-Datei erstellen, die mir das Programm ordnungsgemäß auf dem PC installiert?

2. Ich muss in meinem Programm mehrere .txt Dateien 'verdecken', sozusagen nur für das Programm (ein)lesbar und sichtbar machen. Der Nutzer darf diese Dateien also nicht öffnen können.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Sonntag 22. Februar 2004, 20:10

Zu beiden Fragen:

Da kommt es sehr auf das OS an.

Zu 1. Würde ich ein Pythonscript schreiben, welches das Verzeichnis für das Programm anlegt und alle Teile dort hinkopiert, wohin sie gehören. In dem Script kannst Du auch prüfen, ob gewisse Voraussetzungen erfüllt sind und im Falle des Falles den Anwender auf fehlende Programme oder Module hinweisen. Bei umfangreichen Programmpaketen kannst Du auch distutils nehmen.

Zu 2. Unter Linux werden Dateien versteckt, indem der Dateiname mit einem "." beginnt. Um die Dateien nur von deinem Programm lesen zu können, müsste das Programm mit einem eigenen Benutzeraccount laufen und dann die Dateien nur für diesen Nutzer lesbar gemacht werden. Das kann dann von dem Script eingerichtet werden. Im Grunde sollte es aber reichen, die Dateien mit "chmod 0444 dateiname" als nurlesbar zu kennzeichnen und im Bedarfsfall aus dem Programm die Datei vorübergehend mit [/b]os.chmod("dateiname",0666)[/b] schreibbar und anschliessend mit [/b]os.chmod("dateiname",0444)[/b] wieder nur lesbar zu machen.
Das Ganze hat aber mehr mit dem OS als mit Python zu tun.


Gruß

Dookie
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Sonntag 22. Februar 2004, 21:16

wenn du unter windoof eine setup datei erstellen willst, dann kannst Du das auch mit einer .bat Datei lösen.

wenn du das nciht willst, kannst du dir einen installer runteladen, bakannt sind
Nullsoft, Miscrosoft, und InstallShield (oder so)
Tkinter-Einsteiger

Freitag 5. März 2004, 18:34

Das mit der Setupdatei sollte kein Problem sein.

Ich habe aber dennoch eine Frage: Ich möchte ein Programm schreiben, mit dem man Wörter in einer Textdatei abspeichert. Soweit alles in Ordnung, nur müsste ich die Datei ständig erweitern lassen und somit 'append' verwenden. Auch kein Problem, nur ich brauche ein bestimmtes Wort am ENDE nach jeder Eingabe! Wenn ich einfach nur anhängen lasse befindet sich das Wort also nicht mehr an letzter Stelle und die Datei ist sinnlos.
Ich habe mir überlegt erstmal den Text, der sich bereits in der Datei befindet so: text = in_file.read() herauszufiltern und diesen zu speichern.
Dann könnte ich diesen Text ohne Probleme wieder anhängen.
Nur leider wird, wenn ich den text anschließend während des Speicherns anhängen will, der aktuelle text, sprich das, was ich geschrieben habe, angehängt und nicht der, den ich am Anfang herausgefiltert hätte.

Falls noch etwas unklar ist, gehe ich gerne näher darauf ein.
Würde mich freuen, wenn ihr einen Lösungsvorschlag hättet!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Freitag 5. März 2004, 19:06

Hi,

ich hoffe ich habe dich richtig verstanden:

Code: Alles auswählen

ende_txt = "ENDE"
try:
    f = file("datei.txt","r")
    old_text = f.read().rstrip() #alter Text ohne Whitespaces am Ende
    f.close()
    old_text = old_text[:-length(ende_txt)] # alter Text ohne "ENDE" am Ende
except IOError:
    old_text = ""

new_text = input("Text eingeben")

f = file("datei.txt","w")
f.write(old_text) # alter Text
f.write(new_text) # neuer Text
f.write(ende_text) # Ende vom Text
f.close
Gruß

Dookie
Tkinter-Einsteiger

Freitag 5. März 2004, 19:56

Hi,
ich habe es bisher so versucht:

Code: Alles auswählen

def load():
    global text
    datei = "datei.txt"
    in_file = open(datei,"r")
    text = in_file.read()
    wort = a # Eingabe, die in den Text eingefügt werden soll
    in_file.close()
    schreiben(wort)

def schreiben(wort):
    in_file = open(datei,"w")
    in_file.write(wort)
    in_file.close()


def speichertbla():
    global speichert
    speichert(text)
    
def speichert(text):
    in_file = open(datei,"a")
    in_file.write(text) # Hier ist das Problem. Der Text, der zu diesem   #Zeitpunkt existiert wird angehängt, nicht 'text'!
    in_file.close()
Wundert euch bitte nicht über die vielen Fehler, hauptsache es funktioniert :-)

So hatte ich mir das eigentlich vorgestellt, aber wie gesagt, geht der herausgefilterte Text verloren. :x

PS: Datei stark bearbeitet, nur diese Stelle ich wichtig, ansonsten funktioniert es.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Freitag 5. März 2004, 20:01

Also ich verstehe jetzt überhaupt nichts mehr, wie soll sich da der Pythoninterpreter noch auskennen.

Vermeide erstmal gloable Variablen, besonders wenn Du dann noch Funktionsparameter hast die den gleichen Namen haben.

Wenn Du jetzt noch genau sagen oder an einem Beispiel zeigen kannst, was am ende in der Datei stehen soll, kann man dir sicher besser helfen.


Gruß

Dookie
Antworten