• 26.08.2025, 23:23
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

DrStrange

Senior Member

Python Anwendung *once more*

Freitag, 29. September 2006, 21:04

Hi,

ich brauche eine kleine Applikation, die sich als .exe Datei verteilen lässt, und damit ohne Weiteres vom DAU zu bedienen ist.

Ich hatte spontan an Python gedacht (Yogi?), habe aber noch keine Erfahrung damit.

Folgendes soll geleistet werden:
GUI zur Verzeichnis Auswahl, dann klick auf Button, dann Dateien im Verzeichnis löschen, eventuell nach bestimmten Kriterien.

Lerneffekt ist willkommen.

Also:
Ist Python geeignet dafür? Habt ihr gute Quellen, Tipps zur Entwicklung / Entwicklungsumgebung (derzeit Eclipse auf Mac für nur Java), Beispiele, Tuts, etc.
Wenn ja, immer her damit ;)

Thx!
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung

Freitag, 29. September 2006, 21:18

Ja, es ist sehr geeignet. Binaries für Windows kannst du mit py2exe erstellen. Als GUI-Toolkit bietet sich das auf dem bekannten wxWindows basierenden wxPython an, alternativ das begrenztere Tkinter.

Ich empfehle dir, schrittweise vorzugehen und zunächst eine Kommandozeilen-Version zu schreiben, der du das Verzeichnis als Parameter (man nehme die Variable 'argv' aus dem Modul sys) übergibst. Anschließend kannst du da schnell eine GUI zu basteln. Datei-/Verzeichnis-Auswahl-Dialoge sind natürlich schon dabei.

Eine spezielle IDE brauchst du nicht, ein guter Texteditor tut es in jedem Fall. Ich empfehle dir SciTE: er benutzt eines der besten Code-Editor-Widgets und kann Python-Anwendungen direkt ausführen, so dass du sehr schnell Arbeiten und Testen kannst. Darauf basieren weiterhin etwa Notepad++ oder PSPad, aber es gibt noch diverse andere.
Oh, hatte übersehen, dass du nur einen Mac hast. Für Eclipse gibt es mit PyDev ein Plugin. Die beliebten Editoren SubEthaEdit, BBEdit (?) usw. sollten auch sehr gute Wahlmöglichkeiten darstellen.

Einstiegspunkte: mit os.listdir() kannst du durch Verzeichniseinträge gehen, os.walk() und weitere sind auch im Angebot.

DrStrange

Senior Member

Re: Python Anwendung

Freitag, 29. September 2006, 22:39

Super, danke.
Ich hab mir jetzt python + plugin + tutorials/infos gezogen und steige morgen mal ein.
Hast du noch Resourcen zum GUI-Building?
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung

Freitag, 29. September 2006, 23:14

Für den Einstieg empfehle ich dir doch besser Tkinter, zumal das auch bei der Python-Standarddistribution mit an Bord ist und die erzeugte Executable dann ein paar MB kleiner wird (ja, die werden schon etwas größer, weil da eben alles mit drin ist). Ein sehr gutes Nachschlagewerk und IIRC Tutorial findest du auf http://www.pythonware.com/library/index.htm

Unter http://homework.nwsnet.de/tags/tk/ findest du ein paar kleine Anwendungen von mir, die mit Tkinter realisiert wurden. Mögen sie dir beim Verständnis helfen. Ein oder zwei von ihnen nutzen auch den Verzeichnis- oder zumindest Datei-Dialog.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Y0Gi« (22. Januar 2013, 04:30)

DrStrange

Senior Member

Re: Python Anwendung *update*

Sonntag, 1. Oktober 2006, 16:19

Hi,
bisher geht es recht gut voran, aber wie bekomme ich einen relativen Pfad heraus? Ich möchte in einem Frame ein Image anzeigen (Image oder Photoimage?) und brauche den zur App relativen Pfad, da es sonst nicht geladen werden kann...
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung *update*

Sonntag, 1. Oktober 2006, 17:03

Und warum nicht den absoluten nehmen?

Schau dich mal in os.path um, dort findest du u.a. abspath().

DrStrange

Senior Member

Re: Python Anwendung *update*

Sonntag, 1. Oktober 2006, 17:26

Hi,

Tante Edith sagt:

imagePfad = os.path.abspath('image.gif')
gif1 = PhotoImage(file = imagePfad)

erzeugt ein PhotoImage (warum nur gif?).
Aber wie kann ich es an ein Widget übergeben?
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung *update*

Sonntag, 1. Oktober 2006, 18:49

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from Tkinter import *


IMG_FN = 'irgendein.gif'


class GUI(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)

        img = PhotoImage(file=IMG_FN)

        lbl = Label(self, image=img)
        lbl.image = img  # Keep reference or image will get lost.
        lbl.grid(sticky=N+S+W+E)


if __name__ == '__main__':
    app = GUI()
    app.grid(sticky=N+S+W+E)
    app.mainloop()

DrStrange

Senior Member

Re: Python Anwendung *update*

Sonntag, 1. Oktober 2006, 22:20

Perfekt
1000 Dank!
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

DrStrange

Senior Member

Re: Python Anwendung *once more*

Montag, 2. Oktober 2006, 18:55

Hi,

ich habe jetzt mit py2exe eine ausführbare Datei erstellt, bekomme aber nicht wirklich was ich will.

Das Programm hat als src ein paar KB, und jetzt bekomme ich knapp 8MB an Dateien: zig files mit allen möglichen libs und damit eine (vergleichsweise) riesige App.

Gibt es da was eleganteres / kleineres ?
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung *once more*

Montag, 2. Oktober 2006, 19:24

Das liegt daran, dass das erzeugte "self-contained" Paket den Python-Interpreter sowie alle verwendeten Libraries inklusive dem GUI-Toolkit enthält. Ersteres sind bei einer Konsolenanwendung IIRC so 1,5 bis 2,5 MB, bei Tkinter werden es so 7,5 bis 10 MB und mit wxPython können da schon mal 10 bis knapp 15 MB bei rauskommen.

Aber heutzutage geben Speicherplatz und Bandbreite das locker her.

Achso, nein, mir ist keine nennenswerte und aktuelle Alternative bekannt.

DAP

God

Re: Python Anwendung *once more*

Montag, 2. Oktober 2006, 21:53

evtl. kannst du die dateigröße mit PECompact noch etwas verringern...

Y0Gi

God

Re: Python Anwendung *once more*

Montag, 2. Oktober 2006, 22:09

An Executable-Packer hatte ich auch schon gedacht, hatte aber im Hinterkopf, die .exes wären recht klein und der dicke Batzen steckt in DLLs und Archiven, die zur Distribution des fertigen Builds gehören. Hab aber gerade eine installierte Anwendung flüchtig begutachtet und da ist die .exe zumindest knappe 1,3 MB. Da mag noch was gehen, aber nicht viel.

Alternativ *könnte* man alles erstmal mit einem Tool in eine einzige .exe verpacken und dann nochmal mit nem EXE-Compressor drüber. Das dürfte jedoch wieder insofern witzlos sein, weil der Packer möglicherweise nicht für allgemeine Daten (sondern speziell Executables) ausgelegt ist und zudem auch bei jedem Start alles erst on-the-fly entpackt werden müsste, was auch nicht der Weisheit letzter Schluss ist.

Alles in allem ist das in diesem Fall der Preis, den du für die Effizienz bei der Entwicklung in Kauf nehmen musst. Auf UNIX-Umgebungen sieht das schon deutlich anders aus, weil Python da mittlerweile oft zum Standardumfang gehört.

DrStrange

Senior Member

Re: Python Anwendung *once more*

Montag, 2. Oktober 2006, 22:43

Mmmh... was für sinnvolle Alternativen gibt es für eine solche App in stand-alone Form noch? (Wenn die einzigen Kriterien jetzt die Größe und eine einfache GUI wären...?)
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung *once more*

Montag, 2. Oktober 2006, 23:13

Für mich käme höchstens Java in Frage, aber das muss natürlich auch installiert sein. Und da ich die letzten Tage älteren Java-Code (mit Swing für die GUI) von mir durchgegangen bin, ist mir umso klarer, dass Java im Vergleich zu Python schon um einiges umständlicher zu schreiben ist bzw. deutlich mehr Zeit erfordert.

Aber hey, *irgendwas* ist ja immer ;)

DrStrange

Senior Member

Re: Python Anwendung *once more*

Dienstag, 3. Oktober 2006, 00:03

:) da ich eigentlich ausschließlich Java programmiere, würde ich es damit in einer 1/2 Stunde fertig haben.
Aber leider ist die "Vorgabe" (es ist nur ein Gefallen) halt eine Applikation, die ohne zusätzliche Interpreter auskommt... und ein Lerneffekt ist wie geschrieben durchaus willkommen.

ich schätze ich muss mal mein C++ Wissen (haha) wieder auskramen...mal sehen.
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Manwe

God

Re: Python Anwendung *once more*

Dienstag, 3. Oktober 2006, 00:39

hm.. wie wäre denn delphi? oder entspricht das nicht den anforderungen?

Y0Gi

God

Re: Python Anwendung *once more*

Dienstag, 3. Oktober 2006, 00:39

Du kannst du mal Lua ansehen, das lässt sich in Programme (C/C++ AFAIK) einbetten und dürfte daher recht klein werden.

DrStrange

Senior Member

Re: Python Anwendung *once more*

Dienstag, 3. Oktober 2006, 00:46

Zitat von »Manwe«

hm.. wie wäre denn delphi? oder entspricht das nicht den anforderungen?


*puh* Delphi ist bei mir gut und gerne 10 Jahre her... i'll take it into consideration ;)

Zitat von »Karlsson«

Du kannst du mal Lua ansehen, das lässt sich in Programme (C/C++ AFAIK) einbetten und dürfte daher recht klein werden.


werd's mir mal anschauen.
Tante Edith sagt: klingt ganz gut.
When you come across a big kettle of crazy, it's best not to stir it.

Muhahahahahaha, pwned du kacknoob!
*gockel gockel boaarrcck*

Y0Gi

God

Re: Python Anwendung *once more*

Dienstag, 3. Oktober 2006, 01:28

Auf meiner Site hab ich kürzlich einen Link zu einer netten Übersicht, Zusammenfassung und Linksammlung zu Lua gepostet, kann nicht lange her sein.