wxpython -wx.FilePickerCtrl,选择文件,文件窗口,获取文件路径,python界面制作

目录

基本原理

代码:

效果:


基本原理

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了)。

类继承关系:

wxpython -wx.FilePickerCtrl,选择文件,文件窗口,获取文件路径,python界面制作_第1张图片

界面:

wxpython -wx.FilePickerCtrl,选择文件,文件窗口,获取文件路径,python界面制作_第2张图片

方法:

__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()



效果:

wxpython -wx.FilePickerCtrl,选择文件,文件窗口,获取文件路径,python界面制作_第3张图片

 审美实在太丑,目前功能还没有完善。

你可能感兴趣的:(笔记,python,wxpython,wxwidgets,界面设计)