StaticBox
在wxPython中,StaticBox提供了盒子周围的边框以及顶部的标签,等同于wx.BoxSizer,不一样的地方就在于多了个边框以及顶部的标签
使用教程:
- 创建一个wx.StaticBox对象。
- 使用上面的静态框作为参数声明一个wx.StaticBoxSizer。
- 创建控件并添加staticbox sizer。
- 将其设置为框架的sizer
# 创建一个wx.BoxSizer对象。
LogSizer = wx.BoxSizer()
# 创建一个wx.StaticBox对象。
Log_StaticBox = wx.StaticBox(self.Panel_Bottom, -1, '日志输出:')
# 声明一个wx.StaticBoxSizer与创建的wx.StaticBox对象作为其参数。
# wx.VERTICAL是书香排列,横向排列是wx.HORIZONTAL
Log_StaticBoxSizer = wx.StaticBoxSizer(self.Log_StaticBox, wx.VERTICAL)
然后需要什么控件都可以往Log_StaticBoxSizer 里面进行添加,然后把Log_StaticBoxSizer 嵌套在LogSizer 里面,最后再进行设置一个顶级的Sizer,就像这样:
# 日志输出模块
self.LogSizer = wx.BoxSizer()
self.Log_StaticBox = wx.StaticBox(self.Panel_Bottom, -1, '日志输出:')
self.Log_StaticBoxSizer = wx.StaticBoxSizer(self.Log_StaticBox, wx.VERTICAL)
# 用来查看日志输出的文本框
self.LogText = wx.TextCtrl(self.Panel_Bottom, -1, u'', style=wx.TE_MULTILINE)
# 设置字体风格大小
self.font = wx.Font(10, wx.MODERN, wx.NORMAL, wx.NORMAL, False, 'Consolas')
self.LogText.SetFont(self.font)
self.Log_StaticBoxSizer.Add(self.LogText, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
self.LogSizer.Add(self.Log_StaticBoxSizer, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
self.Panel_Bottom.SetSizer(self.LogSizer)
效果:
ComboBox
wx.Combobox由一个编辑框和列表组成。它可以显示为带有可编辑或只读文本框的静态列表,也可以显示为带下拉列表的文本区域,或者是不带文本框的下拉列表
Style 样式
Style | 描述 |
---|---|
wx.CB_SIMPLE | 创建一个带列表显示的combobox.只支持windows |
wx.CB_DROPDOWN | 创建一个带下拉列表的combobox |
wx.CB_READONLY | 同wx.CB_DROPDOWN,但只有被当做combobox选择项的字符串才能被选定,不在选择列表中的字符串无法将无法填入控件中的文本框 |
wx.CB_SORT | 列表项按字母序排序 |
wx.TE_PROCES_ENTER | 此样式下控件会产生事件wx.EVT_COMMAND_TEXT_ENTER(否则按下Enter键要么被控件内部处理,要么被用于控件导航)。仅支持windows |
以带下拉列表为例,创建一个Combobox
sampleList = [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8']
# 参数:面板,Id,初始值,下拉菜单的列表,风格
Channel_ComboBox = wx.ComboBox(self.Panel_Top_Left, -1, value="", choices=sampleList, style=wx.CB_DROPDOWN)
效果图:
FileDialog
在wxPython中,wx.FileDialog为主流的平台使用本地操作系统对话框。wx.FileDialog 允许用户打开一个文件选择框,然后从系统的文件中选择一个或者多个文件,而且还支持通配符,可以让用户选择关心的文件。例如:"BMP files (.bmp)|.bmp|GIF files (.gif)|.gif"只会显示和选择缀类型是bmp 和gif的图片。
style参数:
style | 描述 |
---|---|
wx.DD_DEFAULT_STYLE | 相当于的组合wx.DEFAULT_DIALOG_STYLE和wx.RESIZE_BORDER |
wx.DD_DIR_MUST_EXIST | 对话框将允许用户仅选择现有文件夹。如果未指定此样式,则将“创建新目录”按钮添加到对话框(在Windows上),或者向用户提供某种其他方式来键入新文件夹的名称。 |
wx.DD_CHANGE_DIR | 将当前工作目录更改为用户选择的目录。(此标志不能与DD_MULTIPLE 样式一起使用 。) |
wx.DD_MULTIPLE | 允许用户选择多个目录 |
wx.DD_SHOW_HIDDEN | 显示隐藏和系统文件夹 |
新建一个方法,然后用一个Button绑定点击事件,当用户点击按钮后,触发该事件,弹出文件选择框
def Choose_Apk_File(self, event):
# 文件选择框
# 参数:parent,message:出现在窗口的标题栏中。defaultDir:参数告诉对话框初始的时候显示哪个目录。defaultFile:是默认保存为的文件。wildcard:使你可以基于给定的模式来过滤列表,使用通常的*和?作为通配符。通配符可以是单个 模式,如“All files (*.*)|*.*”,表示支持所有文件
# wx.FileDialog(parent, message="Choose a file", defaultDir="",defaultFile="",wildcard="*.*", style=0)
dialog = wx.FileDialog(self, u'请选择Apk文件:', defaultDir=os.getcwd(), defaultFile="", wildcard="All files (*.*)|*.*", style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
if dialog.ShowModal() == wx.ID_OK:
path = dialog.GetPath()
# 获取文件拓展名
File_Type = os.path.splitext(path)[1]
if File_Type != u'.apk':
# 消息对话框
MsgDialog = wx.MessageDialog(None, u'请选择Apk文件', u'提示', wx.YES_NO)
if MsgDialog.ShowModal() == wx.ID_YES:
# 点击确定关闭消息框
MsgDialog.Destroy()
else:
# 如果选择的是Apk文件,则把路径set到文本框上面
self.Apk_Path_TextCtrl.SetLabel(path)
dialog.Destroy()
效果:
MessageDialog
Messagebox也就是我们平时所说的消息对话框,主要是在屏幕正中间弹出一个对话框,显示对应的内容,告诉用户发生了什么事情
在wxpython中使用时就是wx.MessageDialog(wxWindow* parent, const wxString& message, const wxString& caption = “Message box”, long style = wx.OK | wx.CANCEL, const wxPoint& pos = wxDefaultPosition)
style参数:
style | 描述 |
---|---|
wx.OK | 显示一个确定按钮 |
wx.CANCEL | 显示取消按钮 |
wx.YES_NO | 显示是和否按钮 |
wx.YES_DEFAULT | 与wx.YES_NO一起使用时,将“是”按钮设置为默认按钮-这是默认行为 |
wx.wxNO_DEFAULT | 与wx.YES_NO一起使用时,将“否”按钮设为默认按钮 |
wx.ICON_EXCLAMATION | 显示一个感叹号图标 |
wx.ICON_HAND | 显示错误图标 |
wx.ICON_ERROR | 显示错误图标 |
wx.ICON_QUESTION | 显示一个问号图标 |
wx.ICON_INFORMATION | 显示信息(i)图标 |
wx.STAY_ON_TOP | 消息框位于所有其他窗口的顶部,甚至包括其他应用程序的窗口(仅Windows) |
示例:
if not 条件:
ErrorDialog = wx.MessageDialog(None, u'输入的信息有误,请重新输入...', u'提示', wx.YES_NO)
if ErrorDialog.ShowModal() == wx.ID_YES:
# 点击确定关闭消息框
ErrorDialog.Destroy()
else:
MsgDialog = wx.MessageDialog(None, u'保存成功~', u'提示', wx.YES_NO)
if MsgDialog.ShowModal() == wx.ID_YES:
# 点击确定关闭消息框
MsgDialog.Destroy()