wxPython控件學習之wx.FileDialog


1. wx.FileDialog 允許用戶從系統的文件中選擇一個或者多個文件。支持通配符,可以讓用戶選擇關心的文件。例如:"BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif"只會顯示和選擇圖片后綴類型是bmp 和gif。

2. Window Styles

wx.FD_OPEN 單個文件選擇對話框
wx.FD_SAVE 文件保存對話框
wx.FD_OVERWRITE_PROMPT 只對於保存對話框有效,當覆蓋文件的時候,會彈出提醒對話框
wx.FD_MULTIPLE 只對於打開對話框有效,支持多選
wx.FD_CHANGE_DIR 改變當前工作目錄為用戶選擇的文件夾

3. 方法集:

 

Method Summary
FileDialog

__init__(selfparentmessagedefaultDirdefaultFilewildcardstylepos) 
parent:父窗口。messale:顯示在文件對話框的標題,defaultDir默認文件夾,defaultFile默認文件,wildcard匹配通配符,style = window style

String GetDirectory(self)  返回默認的文件夾
String GetFilename(self)   獲得默認的文件名字
PyObject GetFilenames(self)  返回用戶選擇的文件列表
int GetFilterIndex(self) 
Returns the index into the list of filters supplied, optionally, in the wildcard parameter.
String GetMessage(self) 返回文件對話框標題
String GetPath(self) 返回選擇的文件的全路徑(包括文件路徑和文件名)
PyObject GetPaths(self) 多選情況下,返回用戶選擇的文件全路徑列表
String GetWildcard(self) 返回通配符
  SetDirectory(selfdir) 設置默認的文件目錄
  SetFilename(selfname) 設置默認的文件名
  SetFilterIndex(selffilterIndex) 
Sets the default filter index, starting from zero.
  SetMessage(selfmessage) 設置對話框的標題
  SetPath(selfpath) 設置默認選擇的文件全路徑名
  SetWildcard(selfwildCard) 設計通配符

4.例子:

a.創建app主入口程序

#-*- coding: UTF-8 -*-
#-------------------------------------------------------------------------------
# Name:        模塊shell
# Purpose:     應用程序的main入口函數
#
# Author:      ankier
#
# Created:     28-10-2012
# Copyright:   (c) ankier 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------

import wx
from mainFrame import MainFrame
import sys

## @detail ShellApp主應用程序的核
class ShellApp(wx.App):
    
    def OnInit(self):
        mainFrame = MainFrame()
        mainFrame.Show(True)          
        return True
    
# @detail main程序的主入口程序   
if __name__ == '__main__':      
    app = ShellApp()
    #重新定向wxpython的輸出輸入和錯誤輸出到系統標准輸入輸出
    sys.stdin = sys.__stdin__
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
    app.MainLoop()

b.MainFrame 文件選擇對話框的使用

#-*- coding: UTF-8 -*-
#-------------------------------------------------------------------------------
# Name:        模塊mainFrame
# Purpose:     應用程序的主界面
#
# Author:      ankier
#
# Created:     28-10-2012
# Copyright:   (c) ankier 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------

import wx
import os

## @detail MainFrame主界面窗口類
class MainFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,  'FileDialog study', pos=wx.DefaultPosition,
            size=(800, 600), style=wx.DEFAULT_FRAME_STYLE)
        self.CreateStatusBar()
        self.__BuildMenus() 
        
        label = wx.StaticText(self, -1, u"當前選擇的文件")
        textBox = wx.TextCtrl(self, -1, style = wx.TE_MULTILINE, size =(-1, 300))    
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(label, 0, wx.ALL|wx.ALIGN_CENTRE)
        sizer.Add(textBox, 1, wx.ALL|wx.ALIGN_CENTRE)
        self.__TextBox = textBox
        self.SetSizerAndFit(sizer)
        
    def __BuildMenus(self):
        mainMenuBar = wx.MenuBar()
        
        fileMenu = wx.Menu()
        
        fileMenuItem = fileMenu.Append(-1, "打開單個文件")
        self.Bind(wx.EVT_MENU, self.__OpenSingleFile, fileMenuItem)
        
        saveMenuItem = fileMenu.Append(-1, "保存文件")
        self.Bind(wx.EVT_MENU, self.__SaveFile, saveMenuItem)
        
        savePromptMenuItem = fileMenu.Append(-1, "保存文件及提示覆蓋")
        self.Bind(wx.EVT_MENU, self.__SavePromptFile, savePromptMenuItem)
        
        multipleOpenMenuItem = fileMenu.Append(-1, "多文件選擇")
        self.Bind(wx.EVT_MENU, self.__MultipleSelectFiles, multipleOpenMenuItem)
        
        mainMenuBar.Append(fileMenu, title =u'&文件')
        
        self.SetMenuBar(mainMenuBar)
   
    ## @detail wx.FileDialog style:wx.FD_OPEN
    def __OpenSingleFile(self, event):
        filesFilter = "Dicom (*.dcm)|*.dcm|" "All files (*.*)|*.*"
        fileDialog = wx.FileDialog(self, message ="選擇單個文件", wildcard = filesFilter, style = wx.FD_OPEN)
        dialogResult = fileDialog.ShowModal()
        if dialogResult !=  wx.ID_OK:
            return
        path = fileDialog.GetPath()
        self.__TextBox.SetLabel(path)
        
    ## @detail wx.FileDialog style:wx.FD_SAVE
    def __SaveFile(self, event):
        filesFilter = "Dicom (*.dcm)|*.dcm|" "All files (*.*)|*.*"
        fileDialog = wx.FileDialog(self, message ="保存文件", wildcard = filesFilter, style = wx.FD_SAVE)
        dialogResult = fileDialog.ShowModal()
        if dialogResult !=  wx.ID_OK:
            return
        path = fileDialog.GetPath()
        self.__TextBox.SetLabel(path)
    
    ## @detail wx.FileDialog style:wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT
    def __SavePromptFile(self, event):
        filesFilter = "Dicom (*.dcm)|*.dcm|" "All files (*.*)|*.*"
        fileDialog = wx.FileDialog(self, message ="保存&prompt文件", wildcard = filesFilter, style = wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT)
        dialogResult = fileDialog.ShowModal()
        if dialogResult !=  wx.ID_OK:
            return
        path = fileDialog.GetPath()
        self.__TextBox.SetLabel(path)        
    
    ## @detail wx.FileDialog style:wx.FD_OPEN | wx.FD_MULTIPLE
    def __MultipleSelectFiles(self, event):
        filesFilter = "Dicom (*.dcm)|*.dcm|" "All files (*.*)|*.*"
        fileDialog = wx.FileDialog(self, message ="多文件選擇", wildcard = filesFilter, style = wx.FD_OPEN|wx.FD_MULTIPLE)
        dialogResult = fileDialog.ShowModal()
        if dialogResult !=  wx.ID_OK:
            return
        paths = fileDialog.GetPaths()
        self.__TextBox.SetLabel('')
        for path in paths:
            self.__TextBox.AppendText(path+'\n')
        
        
        

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM