wxDirDialog: Problem mit Verzeichnis muss exisitieren

Plattformunabhängige GUIs mit wxWidgets.
Antworten
BW
User
Beiträge: 25
Registriert: Dienstag 20. März 2007, 10:25

Hallo zusammen,

die Suche im Internet und in Foren hat mir nicht weiter geholfen, aber vielleicht ist ja jemand hier im Forum bereit mir ein wenig auf die Sprünge zu helfen. Mein Problem ist folgendes:

Ich möchte über einen Button einen wxDirDialog aufrufen, was auch geht, allerdings muss bei mir dieses Verzeichnis schon exisitieren. Und genau darin liegt das Problem.

Laut der Beschreibung wxWidgets 2.8.2 sollte es eigentlich einen Style "wxDD_DIR_MUST_EXIST" geben, aber wenn ich das unter Windows XP, mit Python 2.5 und wxWidgets 2.8.2 angebe erhalte ich einen AttributError: "modul" has no attribute DD_DIR_MUST_EXIST.

Hier mal nur der Ausschnitt aus meinem Code mit dem Problem.

Code: Alles auswählen

import sys
import os
import wx

class DirDialogPanel(wx.Panel):
    def __init__(self, parent, id,
        pos = wx.DefaultPosition, size = wx.DefaultSize,
        style = wx.TAB_TRAVERSAL ):
        wx.Panel.__init__(self, parent, id, pos, size, style)
        
        item0 = wx.BoxSizer( wx.HORIZONTAL )
        
        self.DirButton = wx.Button( self, -1, "DirDialog", wx.DefaultPosition, wx.DefaultSize, 0 )
        item0.Add( self.DirButton, 0, wx.ALIGN_CENTER|wx.ALL, 5 )
        self.SetSizer(item0)
        item0.SetSizeHints( self )
        
        wx.EVT_BUTTON(self, self.DirButton.GetId(), self.OnButton)
    
    def OnButton(self, event):
        dir = os.getcwd()
        dlg = wx.DirDialog(self, "Verzeichnis waehlen:",dir,style=wx.DD_DEFAULT_STYLE | wx.DD_DIR_MUST_EXIST)
        if dlg.ShowModal() == wx.ID_OK:
            path = dlg.GetPath()   

if __name__ == "__main__":
    app = wx.PySimpleApp()
    frm = wx.Frame(None,-1,"test")

    pnl = DirDialogPanel(frm,-1)    
    frm.CentreOnScreen(wx.BOTH)
    frm.Show()
    app.MainLoop()  
Muss ich noch ein anderes Modul importieren? Oder ist das ein Bug?
Wäre jedenfalls sehr nett, wenn mir jemand helfen könnte.

sonnige Grüße :D
BW
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BW hat geschrieben:Laut der Beschreibung wxWidgets 2.8.2 sollte es eigentlich einen Style "wxDD_DIR_MUST_EXIST" geben, aber wenn ich das unter Windows XP, mit Python 2.5 und wxWidgets 2.8.2 angebe erhalte ich einen AttributError: "modul" has no attribute DD_DIR_MUST_EXIST.
Hallo BW!

Das scheint ein Bug zu sein. Bitte melde diesen Bug in der wxPython-Mailinglist.

Ein möglicher Workaround wäre, die Konstante selber zu definieren:

Code: Alles auswählen

DD_DIR_MUST_EXIST =  0x0200
Siehe: http://cvs.wxwidgets.org/viewcvs.cgi/wx ... cvs-markup

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

...besser so:

Code: Alles auswählen

import wx

# Workaround, falls die Konstante noch nicht in wxPython definiert wurde
try:
    dummy = wx.DD_DIR_MUST_EXIST
except AttributeError:
    wx.DD_DIR_MUST_EXIST = 0x0200
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BW
User
Beiträge: 25
Registriert: Dienstag 20. März 2007, 10:25

Hallo Gerold,

herzlichen Dank für die schnelle Antwort.
Ich habe dieses Problem an die wxPython Mailinglist geschrieben.
Jedenfalls funktioniert es auch mit der try Anweisung.

viele Grüße
Barbara W
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BW hat geschrieben:Ich habe dieses Problem an die wxPython Mailinglist geschrieben.
Hallo Barbara!

Ich finde dein Email nicht. Hat es Probleme beim Senden gegeben?

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BW
User
Beiträge: 25
Registriert: Dienstag 20. März 2007, 10:25

guten morgen Gerold,

da ich noch nicht so wirklich vertraut bin mit der Nutzung von Foren und Mailinglisten ist mir da ein kleiner Fehler unterlaufen. Da ich nicht wusste, ob das auch interessant ist für wxWidgets hatte ich mir überlegt schreibe ich doch einfach an beide Mailinglisten. "Dumm" nur, dass ich zwei mal an wxWidgets geschrieben habe.
Aber da hat mir Robin Dunn folgendes geantwortet:
"This has already been fixed for 2.8.3."
Ist das jetzt noch wichtig für die wxPython Mailinglist?

schönen Tag noch
Barbara
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BW hat geschrieben:Aber da hat mir Robin Dunn folgendes geantwortet:
"This has already been fixed for 2.8.3."
Hallo Barbara!

Das ist eine gute Nachricht, danke! :D

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten