halvar.at bcom Python Tools Plone Zope Visual Basic Programmierung SW3 PC Computer Netzwerk Linux Windows Shop

Skip to content

Gerolds Homepage

Sections
Personal tools
You are here: Home Python Python Code Windows Dialog - Datei öffnen - Datei speichern win32filedialog.html
Document Actions

win32filedialog.html

"Datei öffnen"-Dialog und "Datei speichern unter"-Dialog von Windows verwenden. (HTML-Ansicht)

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
******************************************************************************
* Description:  Datei-Öffnen/Speichern Dialog von Windows
* Requirements: Python 2.3:  http://www.python.org
*               pywin32:    http://sourceforge.net/projects/pywin32/
******************************************************************************
"""

import win32ui
import win32con


#----------------------------------------------------------------------
class Win32FileDialog(object):
    """
    Windows Datei-Öffnen/Speichern-Dialog
    """

    #----------------------------------------------------------------------
    def __init__(
        self, 
        file_open_dialog = True,
        initial_dir = "",
        initial_file = "",
        def_ext = "", 
        filterstring = "Alle Dateien|*.*",
        overwriteprompt = False,
        pathmustexist = True,
        filemustexist = False,
        createprompt = False
    ):
        """
        file_open_dialog: Wenn True, dann wird der Öffnen-Dialog und wenn
                          False, dann wird der "Speichern unter"-Dialog angezeigt.
        initial_dir: Wenn ein gültiger Pfad angegeben wurde, dann wird dieser
                     als Vorgabe verwendet.
        initial_file: Dateiname, der als Vorgabe verwendet werden soll.
        def_ext: Vorgegebene Dateinamenerweiterung. Wenn keine Erweiterung
                 wie z.B. "exe" oder "doc" angegeben wurde, dann wird diese
                 Erweiterung verwendet und an den Dateinamen angehängt.
        filterstring: Eine Filterzeichenfolge könnte z.B. so aussehen.
                      "Einstellungen (*.ini)|*.ini|Alle Dateien (*.*)|*.*"
        overwriteprompt: Wenn True, dann wird eine Meldung ausgegeben, die fragt
                         ob die Datei überschrieben werden soll.
        pathmustexist: Wenn True, dann muss der Ordner existieren.
        filemustexist: Wenn True, dann muss die Datei existieren.
        createprompt: Wenn True, dann wird, wenn die Datei nicht existiert,
                      eine Meldung ausgegeben, die fragt ob die Datei 
                      neu erstellt werden soll.
                      
        """

        # Daten übernehmen
        self.file_open_dialog = file_open_dialog
        self.initial_dir = initial_dir
        self.initial_file = initial_file
        self.def_ext = def_ext
        self.filterstring = filterstring

        # Flags zusammensetzen
        self.flags = win32con.OFN_HIDEREADONLY
        if overwriteprompt:
            self.flags = self.flags | win32con.OFN_OVERWRITEPROMPT
        if pathmustexist:
            self.flags = self.flags | win32con.OFN_PATHMUSTEXIST
        if filemustexist:
            self.flags = self.flags | win32con.OFN_FILEMUSTEXIST
        if createprompt:
            self.flags = self.flags | win32con.OFN_CREATEPROMPT

    
    #----------------------------------------------------------------------
    def show_file_dialog(self):
        """
        Zeigt den Datei-Öffnen/Speichern Dialog an und gibt den ausgewählten
        Dateinamen zurück.
        """

        filedialog = win32ui.CreateFileDialog(
            self.file_open_dialog, #bFileOpen
            self.def_ext, #defExt
            self.initial_file, #fileName
            self.flags, #flags
            self.filterstring #filter
        )

        # Anfangsverzeichnis setzen
        if self.initial_dir:
            filedialog.SetOFNInitialDir(self.initial_dir)
            
        # Dialog anzeigen
        retval = filedialog.DoModal()
        
        # Rückgabe und Exit
        pathname = filedialog.GetPathName()
        filedialog = None 
        if retval == 1:
            return pathname
        else:
            return ""



#----------------------------------------------------------------------
if __name__ == "__main__":
    
    # Öffnen-Dialog testen
    print Win32FileDialog(
        True, 
        initial_dir = "%SystemRoot%",
        initial_file = "win.ini",
        def_ext = "ini",
        filterstring = "INI-Datei (*.ini)|*.ini|Alle Dateien (*.*)|*.*",
        filemustexist = True
    ).show_file_dialog()
    
    # Speichern-Dialog testen
    print Win32FileDialog(
        False, 
        initial_dir = "%SystemRoot%",
        filterstring = "INI-Datei (*.ini)|*.ini|Alle Dateien (*.*)|*.*"
    ).show_file_dialog()

 

 

Powered by Plone   Powered by Bcom   Powered by Gentoo-Linux

Diese Seite erfüllt evt. :-) folgende Standards: