Datei öffnen Dialog

Plattformunabhängige GUIs mit wxWidgets.
rednose
User
Beiträge: 8
Registriert: Montag 20. November 2006, 20:52

Datei öffnen Dialog

Beitragvon rednose » Montag 2. April 2007, 13:50

Hallo zusammen,
ich habe zu dem Thema hier zwei ältere threads gefunden, aber sooo hilfreich waren die nicht.
Ich habe bisher ein wenig Python scripts geschrieben und möchte jetzt gerne eine Windows - Anwendung schreiben,
in der ich zum Beispiel eine Datei über den gewohnten (oder ähnlichen) Dialog öffnen und auch speichern kann.
Auf meiner google-Tour habe ich was über Tkinter und wxPython gefunden, weiß allerdings immer noch nicht, wie, wozu, welches, etc.
Bei wxPython scheint es etwas zu geben, ich habe da in einem Beispiel eine Zeile "dlg = wxFileDialog(self)" gefunden.
Beim Versuch, das und die folgenden Anweisungen in meinem Script einzubinden, bekam ich die Fehlermeldung:
NameError: name 'wxFileDialog' is not defined
Ich benutze Python 2.4 und wxPython2.8-win32-unicode-2.8.3.0-py24.
Kann mir jemand sagen, wo vielleicht der Fehler ist, oder ob es eine andere Möglichkeit gibt, mit Python unter Windows Dateien über Dialog zu öffnen?

Gruß

Michael
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Re: Datei öffnen Dialog

Beitragvon Francesco » Montag 2. April 2007, 14:10

Code: Alles auswählen

import wx
d = wx.FileDialog(...)
d.ShowModal()

Wenn Du das in dieser Form aufrufst, müsste es klappen.
rednose
User
Beiträge: 8
Registriert: Montag 20. November 2006, 20:52

Beitragvon rednose » Montag 2. April 2007, 14:36

Ich hab' jetzt auf 2.5 inclusive dem dazugehörigen wxPython umgestellt,
da ich nur warnings und Fehler bekam.
Hat sich allerdings leider nicht verändert:

Wenn ich das so mache:

Code: Alles auswählen

import wx
d = wxFileDialog ( None, style = wxOPEN )
d.ShowModal()

bekomme ich folgende Meldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "F:\Python25\TestOpenFiles.py", line 2, in <module>
    d = wxFileDialog ( None, style = wxOPEN )
NameError: name 'wxFileDialog' is not defined


Ich hatte dieses Beispiel gewählt:

Code: Alles auswählen

from wxPython.wx import *

application = wxPySimpleApp()

# Create an open file dialog

dialog = wxFileDialog ( None, style = wxOPEN )

# Show the dialog and get user input

if dialog.ShowModal() == wxID_OK:

   print 'Selected:', dialog.GetPath()

# The user did not select anything

else:

   print 'Nothing was selected.'

# Destroy the dialog

dialog.Destroy()


Der open file dialog erschien dann zwar, aber ich bekam ständig die warning:

Code: Alles auswählen

Warning (from warnings module):
  File "F:/Python25/TestOpenFiles02.py", line 1
    from wxPython.wx import *
DeprecationWarning: The wxPython compatibility package is no longer automatically generated or actively maintained.  Please switch to the wx package as soon as possible.

Damit konnte ich nix anfangen, weil ich ja das Neueste von wxPython.org runtergeladen hatte...

Wenn ich aber import wx schreibe, kennt er die Module nicht....
Watt nu?

Gruß

Michael
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Beitragvon Francesco » Montag 2. April 2007, 14:50

Das ist der Nachteil, wenn alte Dokus noch im Netz sind.

Man beachte den Punkt nach wx.FileDialog und wx.Open:
statt:
d = wxFileDialog ( None, style = wxOPEN )
also:
d = wx.FileDialog ( None, style = wx.OPEN )

Hilfreich ist auch immer das Demo, falls du es noch nicht heruntergeladen hast. Da kannst du auch den Code (zum Testen) ändern und diesen dann ausführen.
rednose
User
Beiträge: 8
Registriert: Montag 20. November 2006, 20:52

Beitragvon rednose » Montag 2. April 2007, 15:13

Vielen Dank! :D
So funktionierts Fehler- und Warning-frei:

Code: Alles auswählen

import wx

application = wx.PySimpleApp()

# Create an open file dialog

dialog = wx.FileDialog ( None, style = wx.OPEN )

# Show the dialog and get user input

if dialog.ShowModal() == wx.ID_OK:

   print 'Selected:', dialog.GetPath()

# The user did not select anything

else:

   print 'Nothing was selected.'

# Destroy the dialog

dialog.Destroy()


Ich kann ja leider nicht feststellen, was alt und was neu,
gültig, oder nicht mehr gültig ist, da ich Beides ja nicht kenne.

Übrigens, welches Demo meinst Du? Da sind bei Python und wxPython eine Reihe von Links, aber nach dem ersten Durchwühlen habe ich noch kein Demo gefunden.


Gruß

Michael
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 2. April 2007, 15:20

rednose hat geschrieben:Übrigens, welches Demo meinst Du? Da sind bei Python und wxPython eine Reihe von Links, aber nach dem ersten Durchwühlen habe ich noch kein Demo gefunden.

In dem Paket wo die Dokumentation drin ist, ist auch ein großes Demoprogramm dabei, wo viele Widgets demonstriert werden und mit Code wie man sie nutzt. Die ist sehr praktisch und sehr empfehlenswert, wenn man mit wxPython programmieren will.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
rednose
User
Beiträge: 8
Registriert: Montag 20. November 2006, 20:52

Beitragvon rednose » Montag 2. April 2007, 15:33

Ohja, klasse.
Das war die Geschichte mit dem Wald und den Bäumen...ich hab' gerade den Augenarzttermin festgemacht.

Danke nochmal!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder