Python win32com.shell.shell 模块,SHBrowseForFolder() 实例源码

我们从Python开源项目中,提取了以下3个代码示例,用于说明如何使用win32com.shell.shell.SHBrowseForFolder()

项目:inter    作者:rsms    | 项目源码 | 文件源码
def GetFolder(message=None):
    """
    Select folder dialog. Returns path if one is selected. Otherwise it returns None.
    Availability: FontLab, Macintosh, PC
    """
    path = None
    if MAC:
        if haveMacfs:
            fss, ok = macfs.GetDirectory(message)
            if ok:
                path = fss.as_pathname()
        else:
            from robofab.interface.mac.getFileOrFolder import GetFileOrFolder
            # This _also_ allows the user to select _files_, but given the
            # package/folder dichotomy, I think we have no other choice.
            path = GetFileOrFolder(message)
    elif PC:
        if inFontLab:
            if not message:
                message = ''
            path = fl.GetPathName('', message)
        else:
            myTuple = shell.SHBrowseForFolder(0, None, message, 64)
            try:
                path = shell.SHGetPathFromIDList(myTuple[0])
            except:
                pass
    else:
        _raisePlatformError('GetFile')
    return path
项目:chirp_fork    作者:mach327    | 项目源码 | 文件源码
def gui_select_dir(self, start_dir=None):
        from win32com.shell import shell

        try:
            pidl, _, _ = shell.SHBrowseForFolder()
            fname = shell.SHGetPathFromIDList(pidl)
        except Exception, e:
            LOG.error("Failed to get directory: %s" % e)
            return None

        return str(fname)
项目:crisscross    作者:bhaveshAn    | 项目源码 | 文件源码
def run(self):
        try:
            if self.mode != "dir":
                args = {}

                if self.path:
                    args["InitialDir"] = os.path.dirname(self.path)
                    path = os.path.splitext(os.path.dirname(self.path))
                    args["File"] = path[0]
                    args["DefExt"] = path[1]
                args["Title"] = self.title if self.title else "Pick a file..."
                args["CustomFilter"] = 'Other file types\x00*.*\x00'
                args["FilterIndex"] = 1

                filters = ""
                for f in self.filters:
                    if type(f) == str:
                        filters += (f + "\x00") * 2
                    else:
                        filters += f[0] + "\x00" + ";".join(f[1:]) + "\x00"
                args["Filter"] = filters

                flags = (win32con.OFN_EXTENSIONDIFFERENT |
                         win32con.OFN_OVERWRITEPROMPT)
                if self.multiple:
                    flags |= win32con.OFN_ALLOWmultiple | win32con.OFN_EXPLORER
                if self.show_hidden:
                    flags |= win32con.OFN_FORCESHOWHIDDEN
                args["Flags"] = flags

                if self.mode == "open":
                    self.fname, _, _ = win32gui.GetOpenFileNameW(**args)
                elif self.mode == "save":
                    self.fname, _, _ = win32gui.GetSaveFileNameW(**args)

                if self.fname:
                    if self.multiple:
                        seq = str(self.fname).split("\x00")
                        dir_n, base_n = seq[0], seq[1:]
                        self.selection = [os.path.join(dir_n, i)
                                          for i in base_n]
                    else:
                        self.selection = str(self.fname).split("\x00")
            else:
                # From http://goo.gl/UDqCqo
                pidl, display_name, image_list = shell.SHBrowseForFolder(
                    win32gui.GetDesktopWindow(),
                    None,
                    self.title if self.title else "Pick a folder...",
                    0, None, None
                )
                self.selection = [str(shell.SHGetPathFromIDList(pidl))]

            return self.selection
        except (RuntimeError, pywintypes.error):
            return None