目录
基本原理
代码:
效果:
wx.FilePickerCtrl
该控件可以用来选中一个文件。当你单击时弹出wx.FileDialog窗口。这是一个(小)部件,实现可能有所不同,用于访问文件选择器对话框。只有当USE_FILEPICKERCTRL设置为1(默认值)时才可用。
支持以下样式:
wx.FLP_DEFAULT_STYLE: 缺省值为 wx.FLP_OPEN | wx.FLP_FILE_MUST_EXIST , wx.FLP_USE_TEXTCTRL.
wx.FLP_USE_TEXTCTRL: 在选择器按钮的左边创建一个完全由wx.FilePickerCtrl管理的文本控件。用户可以使用它来指定路径(参见SetPath)。文本控件与按钮的值自动同步。使用wx.PickerBase中定义的函数来修改文本控件。
wx.FLP_OPEN: 创建一个选择器,允许用户选择要打开的文件
wx.FLP_SAVE: 创建一个选择器,允许用户选择要保存的文件。
wx.FLP_OVERWRITE_PROMPT: 只能与wx.FLP_SAVE一起使用:在选择文件前向用户询问确认。
wx.FLP_FILE_MUST_EXIST: 只能与wx.FLP_OPEN组合使用:在弹出的wx.FileDialog窗口中选择的文件必须是一个已经存在的文件。请注意,当使用FLP_USE_TEXTCTRL时,用户仍然可能在文本控件中输入不存在的文件名,这个标志是对用户的提示,而不是保证所选文件对程序来说确实存在。
wx.FLP_CHANGE_DIR: 当用户文件选择变化时更改当前工作目录。
wx.FLP_SMALL: 使用带有小按钮的控件,而不是的Browse按钮。
可触发的事件:
事件的处理程序为wx.FileDirPickerEvent。触发事件EVT_FILEPICKER_CHANGED:用户在控件中使用按钮或文本控件(参见wx.FLP_USE_TEXTCTRL;注意,只有当用户的输入是有效的,事件才会被触发,例如,一个存在的文件路径,如果是wx.FLP_FILE_MUST_EXIST了)。
类继承关系:
界面:
方法:
__init__ |
|
Create |
使用给定的参数创建一个组件 |
GetClassDefaultAttributes |
|
GetPath |
返回当前选定文件的绝对路径。 |
SetInitialDirectory |
在浏览文件前设置窗口显示的目录。 |
SetPath |
设置当前选定文件的绝对路径。 |
###########################################################################
## Python code generated with wxFormBuilder (version Oct 26 2018)
## http://www.wxformbuilder.org/
##
## PLEASE DO *NOT* EDIT THIS FILE!
###########################################################################
import wx
###########################################################################
## Class MyFrame1
###########################################################################
class MyFrame1 ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"群艾特功能_v1", pos = wx.DefaultPosition, size = wx.Size( 243,294 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
bSizer1 = wx.BoxSizer( wx.VERTICAL )
self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"输入QQ群名称", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText1.Wrap( -1 )
self.m_staticText1.SetFont( wx.Font( 12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, wx.EmptyString ) )
self.m_staticText1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNTEXT ) )
bSizer1.Add( self.m_staticText1, 0, wx.ALL|wx.EXPAND, 5 )
self.m_textCtrl2 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer1.Add( self.m_textCtrl2, 0, wx.ALL|wx.EXPAND, 5 )
self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"打开艾特名单", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_staticText1.Wrap( -1 )
self.m_staticText1.SetFont( wx.Font( 12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, wx.EmptyString ) )
self.m_staticText1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_BTNTEXT ) )
bSizer1.Add( self.m_staticText1, 0, wx.ALL|wx.EXPAND, 5 )
self.m_filePicker4 = wx.FilePickerCtrl( self, wx.ID_ANY, wx.EmptyString, u"选择名单", u"EXCEL文件(*.xls;*.xlsx)|*.xls;*.xlsx|所有文件(*.*)|*.*", wx.DefaultPosition, wx.DefaultSize, wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST, wx.DefaultValidator, u"浏览" )
bSizer1.Add( self.m_filePicker4, 0, wx.ALL|wx.EXPAND, 5 )
gSizer1 = wx.GridSizer( 1, 2, 0, 0 )
gSizer1.SetMinSize( wx.Size( 20,20 ) )
self.m_button2 = wx.Button( self, wx.ID_ANY, u"测试", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button2.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INFOBK ) )
gSizer1.Add( self.m_button2, 0, wx.ALL, 5 )
self.m_button1 = wx.Button( self, wx.ID_ANY, u"确认", wx.DefaultPosition, wx.DefaultSize, 0 )
self.m_button1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INFOBK ) )
gSizer1.Add( self.m_button1, 0, wx.ALL|wx.ALIGN_RIGHT, 5 )
bSizer1.Add( gSizer1, 0, wx.EXPAND, 5 )
bSizer7 = wx.BoxSizer( wx.VERTICAL )
self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, u"艾特过程中将锁定鼠标键盘!防止出错! (Ctrl+Alt+Del紧急解锁)", wx.DefaultPosition, wx.Size( -1,40 ), 0 )
self.m_staticText2.Wrap( -1 )
self.m_staticText2.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHT ) )
bSizer7.Add( self.m_staticText2, 0, 0, 5 )
self.m_panel1 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
self.m_panel1.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_INACTIVEBORDER ) )
self.m_panel1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT ) )
bSizer7.Add(self.m_panel1, 1, wx.ALL | wx.EXPAND, 5)
bSizer1.Add( bSizer7, 1, wx.EXPAND, 5 )
self.SetSizer( bSizer1 )
self.Layout()
self.m_statusBar1 = self.CreateStatusBar( 1, wx.STB_SIZEGRIP, wx.ID_ANY )
# Connect Events
self.m_button2.Bind( wx.EVT_BUTTON, self.m_button2OnButtonClick )
self.m_button1.Bind( wx.EVT_BUTTON, self.m_button1OnButtonClick )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def m_button2OnButtonClick( self, event ):
wx.MessageBox("Is this way easier?", "Via Function",
wx.YES_NO | wx.ICON_QUESTION)
event.Skip()
def m_button1OnButtonClick( self, event ):
# # 键盘控制
# keyboard = Controller()
#获取文件路径
path = self.m_filePicker4.GetPath()#获取当前选中文件的路径
if ("xls" in path or "xlsx" in path)==0:
wx.MessageBox("路径错误", "提示",
wx.ICON_ERROR)
else:
wx.MessageBox('输入成功!', "提示", wx.ICON_INFORMATION)
event.Skip()
if __name__ == '__main__':
app = wx.App(False)#print输出是否重定向
frame = MyFrame1(None)
frame.Show()
app.MainLoop()
审美实在太丑,目前功能还没有完善。