wxPython 实践(六)对话框

wxPython 实践(一)概述
wxPython 实践(二)基础控件
wxPython 实践(三)页面布局
wxPython 实践(四)事件响应
wxPython 实践(五)高级控件
wxPython 实践(六)对话框
wxPython 实践(七)GDI 介绍
wxPython 实践(八)其他

文章目录

  • 1. wx.Dialog(对话框)
  • 2. wx.MessageDialog(消息对话框)
    • 2.1. wx.MessageBox(消息框)
    • 2.2. wx.MessageDialog(消息对话框)
  • 3. wx.About
  • 4. wx.*ChoiceDialog(列表对话框)
    • 4.1. wx.SingleChoiceDialog(单选列表对话框)
    • 4.2. wx.GetSingleChoice
    • 4.3. wx.MultiChoiceDialog
  • 5. wx. ProgressDialog(进度对话框)
  • 6. wx.FileDialog(文件对话框)
    • 6.1. wx.FileDialog
    • 6.2. wx.FileSelector
  • 7. wx.DirDialog(目录对话框)
    • 7.1. wx.DirDialog
    • 7.2. wx.DirSelector
  • 8. wx.ColourDialog(颜色对话框)
  • 9. FontDialog(字体对话框)
  • 10. wx.PrintDialog(打印)
    • 10.1. wx.PrintDialog
    • 10.1. wx.PrintDialogData
    • 10.1. wx.PageSetupDialog
  • 11. wx. FindReplaceDialog(查找替换)
    • 11.1. wx. FindReplaceDialog
    • 11.2. wx.FindReplaceData
  • 12. wx.adv.Wizard

官网
https://docs.wxpython.org/wx.1moduleindex.html
https://www.w3ccoo.com/wxpython/wxpython_major_classes.html
系列文章:
https://wintel.blog.csdn.net/?type=blog

1. wx.Dialog(对话框)

wx.Dialog 类是所有对话框窗口类的的基类,一个对话框应用类一般都从 wx.Dialog 类或者其子类派生(wx.PrintDialog例外,它调用系统原生对话框)。wx.Dialog 常用来完成一个交互任务或者作为应用的顶层窗口使用。
对话框分为两种类型:

  • 模态对话框:在关闭之前,不能与同一个应用程序的其他窗口进行交互,它是阻塞式调用方式,模态对话框通过调用 ShowModal() 方法实现;使用模式对话框时,事件就在对话框内部循环,必须将对话框关闭才能继续执行主界面的操作。对于参数选择的对话框,一般用模态对话框。
  • 非模态对话框:既可以和它交互,也可以和同一个应用程序的其他窗口交互。它是非阻塞式调用方式,非模态对话框调用 Show() 方法实现。对于显示或查看某些内容的对话框,一般用非模态对话框。

wx.Dialog 对话框是一个带有标题栏的窗口(必要时候还带有一个系统菜单)。在一个对话框中可以包含控件和其他窗口,通过这些控件和窗口,用户可以做出一些选择或者回答一些问题等等。对话框可以自动滚动。
通常情况下,一个对话框包含一个甘比按钮,或者包含两个按钮,一个用于确认(OK),一个用于取消(Cancel)。如果有取消按钮,当用户按下”Esc”键时,则会自动激活该按钮的功能。在默认情况下,wx.Dialog 带有两个标准的按钮 wx.ID_OK 和wx.ID_CANCEL 。

窗口样式:

  • wx.CAPTION:在对话框上添加标题。
  • wx.DEFAULT_DIALOG_STYLE:相当于wx.CAPTION, wx.CLOSE_BOX两者组合。
  • wx.RESIZE_BORDER:在窗口周围显示可调整大小的框架。
  • wx.SYSTEM_MENU:显示系统菜单。
  • wx.CLOSE_BOX:在框架上显示一个关闭框。
  • wx.MAXIMIZE_BOX:在对话框上显示一个最大化框。
  • wx.MINIMIZE_BOX:在对话框上显示一个最小化框。
  • wx.THICK_FRAME:在窗口周围显示粗框。
  • wx.STAY_ON_TOP:对话框位于所有其他窗口的顶部。
    - NO_3D:此样式已过时,不再做任何事情,请勿在任何新代码中使用它。
  • wx.DIALOG_NO_PARENT:默认情况下,父窗口为None的对话框将以应用程序的顶级窗口作为父窗口。使用这种风格可以防止这种情况发生,并创建一个孤立的对话框。对于模式对话框,不建议这样做。
  • wx.DIALOG_EX_CONTEXTHELP:在Windows下,在标题上放置一个查询按钮。当按下按钮时,Windows将进入上下文敏感的帮助模式,如果用户单击应用程序窗口,wxPython将发送一个wx.EVT_HELP事件。注意,这是一个扩展样式,必须在调用Create之前调用SetExtraStyle来设置。
  • wx.DIALOG_EX_METAL:在macOS上,这种风格的框架将显示为金属外观。这是一个扩展风格。

常用方法:

  • Centre(self, direction=BOTH):窗口居中显示,direction取值为wx.HORIZONTAL, wx.VERTICAL 和 wx.BOTH。
  • GetReturnCode(self):获得窗口的返回码。
  • EndModal(self, retCode):结束一个模式对话框,传递一个从ShowModal调用返回的值。
  • Iconize(self, iconize=True):将窗口图标化或者恢复正常。仅在Windows系统下有效。
  • IsIconized(self):如果窗口被图标化,则返回True。仅在Windows系统下有效。
  • IsModal(self):如果是模式对话框则返回True,否则返回False。
  • SetIcon(self, icon):设置对话的图标。
  • SetReturnCode(self, retCode):设置对话框的返回码。
  • Show(self, show=True):显示或者隐藏对话框。
  • ShowModal(self):显示一个模式对话框。注意,此函数创建了一个临时事件循环,该事件循环优先于应用程序的主事件循环。
import wxclass MyDialog(wx.Dialog):def __init__(self, parent, title):# super(ModalDialog, self).__init__(parent, title=title)super().__init__(parent=parent)self.SetTitle(title)vBox = wx.BoxSizer(wx.VERTICAL)hBox2 = wx.BoxSizer(wx.HORIZONTAL)okButton = wx.Button(self, label="确认")closeButton = wx.Button(self, label="关闭")hBox2.Add(okButton)hBox2.Add(closeButton, flag=wx.LEFT, border=5)okButton.Bind(wx.EVT_BUTTON, self.OnClose)closeButton.Bind(wx.EVT_BUTTON, self.OnClose)vBox.Add(hBox2, flag=wx.ALIGN_CENTER|wx.TOP|wx.BOTTOM, border=10)self.SetSizer(vBox)self.Fit()self.Center()# # 设置对话框为模态# self.ShowModal()def OnClose(self, e):self.Destroy()class MyWin(wx.Frame):def __init__(self, parent, title):super().__init__(parent=parent)self.SetTitle(title=title)toolbar = self.CreateToolBar()# # 设置图标大小toolbar.SetToolBitmapSize((20, 20))setting_button = toolbar.AddTool(wx.ID_SETUP, "Setting", wx.Bitmap("icons/setting.png"))toolbar.Realize()toolbar.Bind(wx.EVT_TOOL, self.OnChangeDepth)self.Centre()def OnChangeDepth(self, e):dlg = MyDialog(None, "MyDialog")dlg.ShowModal()dlg.Destroy()if __name__ == '__main__':app = wx.App()window = MyWin(None, title="Dialog Parent")window.Show()app.MainLoop()

在这里插入图片描述

https://blog.csdn.net/qq_45587822/article/details/105205538
https://wintel.blog.csdn.net/article/details/130894366?spm=1001.2014.3001.5502

2. wx.MessageDialog(消息对话框)

https://wintel.blog.csdn.net/article/details/130788635?spm=1001.2014.3001.5502

2.1. wx.MessageBox(消息框)

    def OnChangeDepth(self, e):wx.MessageBox("MyMessageBox", "信息", wx.OK|wx.ICON_INFORMATION)

在这里插入图片描述
在这个例子中,我们展示了一个 OK 按键和一个 Information 图标。
默认模态展示。

2.2. wx.MessageDialog(消息对话框)

支持样式:

  • wx.OK: 在对话框上显示一个OK按钮,它可以和CANCEL按钮组合;
  • wx.Cancel: 在对话框上显示一个Cancel按钮, 它可以和OK以及YES_NO按钮组合;
  • wx.YES_NO: 在对话框上同时显示Yes和No按钮,推荐使用这种样式的时候和CANCEL组合;
  • wx.HELP: 在对话框上显示Help按钮,如果其标签为系统缺省值,则它可以特殊的外观和位置;
  • wx.YES_DEFAULT: Yes按钮为默认值;
  • wx.NO_DEFAULT: No按钮为默认值;
  • wx.CANCEL_DEFAULT: Cancel按钮为默认值;
  • wx.ICON_NONE: 如果可能,在对话框上不显示任何图标;
  • wx.ICON_ERROR: 在对话框上显示一个错误图标;
  • wx.ICON_WARNING: 在对话框上显示一个警告图标;
  • wx.ICON_QUESTION: 在对话框上显示一个问号标志;
  • wx.ICON_INFOMATION: 在对话框上显示一个信息图标;
  • wx.ICON_EXCLAMATION: 同wx.ICON_WARNING;
  • wx.ICON_HAND: 同wx.ICON_ERROR;
  • wx.ICON_AUTH_NEEDED: 显示身份验证所需的符号;
  • wx.STAY_ON_TOP: 使消息框保持在所有其他窗口之上 (目前仅在MSW和GTK下实现);
  • wx.CENTRE: 将消息框置于其父消息框的中央,如果未指定其父消息框,则将消息框置于屏幕中央。在MSW下设置此样式没有区别,因为对话框始终以父对象为中心。
	def OnChangeDepth(self, e):# wx.MessageBox("MyMessageBox", "信息", wx.OK|wx.ICON_INFORMATION)# dlg = wx.MessageDialog(None, "MyMessageDialog", "错误", wx.OK|wx.ICON_ERROR)dlg = wx.MessageDialog(parent=None, message="MyMessageDialog", caption="信息", style=wx.OK|wx.ICON_ERROR)dlg.ShowModal()

在这里插入图片描述
消息对话框对话框显示单行或多行消息,它比消息框(wx.MessageBox)更加灵活,可定制更多的特性,比如可以更改消息对话框的图标或者按钮等。
创建消息对话框比较简单。通过将 parent 参数设置为 None,可以将对话框设置为顶层窗口。接着的两个字符串参数为消息内容和对话框的标题。调用 ShowModal() 函数,可以将对话框显示在屏幕上。

3. wx.About

为了创建一个 About 对话框,我们需要新建两个对象:一个是 wx.AboutDialogInfo,另一个是 wx.AboutBox。
wxPython 可以展示两种 About 框,取决于我们使用哪个平台以及调用哪个方法,可以是原生的对话框也可以是 wxPython 类的对话框。Windows 原生对话框无法展示自定义的图标、许可文字以及URL链接。如果我们忽略这三个参数, wxPython 将展示一个原生的对话框,否则它将展示一个 wxPython 对话框。如果想尽可能的保持原生的话,建议在一个单独的菜单项提供许可信息。GTK+ 可以显示所有这些信息。

wx.AboutDialogInfo 提供了一系列方法来设置 About 对话框所需要的相关信息。其常用方法有:

  • SetIcon: 设置一个图标;
  • SetName: 设置应用的名称;
  • SetDescription: 设置应用的描述信息;
  • SetCopyright: 设置应用的版权信息;
  • SetWebSite: 设置网站地址;
  • SetLicence: 设置应用的许可信息;
  • AddDeveloper: 添加开发者;
  • AddDocWriter: 添加文档作者;
  • AddArtist: 添加美术设计者;
  • AddTranslator: 添加翻译者。
    根据上面这些信息,AbouBox 可以显示一个关于应用的比较全面的信息。
    def OnChangeDepth(self, e):about_info = wx.adv.AboutDialogInfo()wx.adv.AboutBox(about_info)# try:#     AboutDialogInfo = wx.AboutDialogInfo#     AboutBox = wx.AboutBox# except AttributeError:#     AboutDialogInfo = wx.adv.AboutDialogInfo#     AboutBox = wx.adv.AboutBox# info = AboutDialogInfo(self)# # info.SetIcon(wx.Icon("images\python.png", wx.BITMAP_TYPE_PNG))# info.SetName("My wxPython Program")# info.SetVersion("1.0")# info.SetDescription("这是一个AboutBox演示程序")# info.SetCopyright("(C) 2023 My name")# info.SetWebSite("http://www.myprogram.com")# info.SetLicence("本程序放弃版权,可自由传播")# info.AddDeveloper("Developer name")# info.AddDocWriter("Document writer")# info.AddArtist("Artist")# info.AddTranslator("Translator")# AboutBox(info)

代码均报错
https://docs.wxpython.org/wx.adv.AboutDialogInfo.html
https://www.kancloud.cn/apachecn/zetcode-zh/1950266
https://juejin.cn/post/7491589110248456229
https://wintel.blog.csdn.net/article/details/130788669?spm=1001.2014.3001.5502

4. wx.*ChoiceDialog(列表对话框)

https://wintel.blog.csdn.net/article/details/130894507?spm=1001.2014.3001.5502

4.1. wx.SingleChoiceDialog(单选列表对话框)

wx.SingleChoiceDialog 实现一个显示字符串列表的对话框,它允许用户从该字符串列表中选择一个。双击列表项等同于单击该列表项并按下”确认”按钮(即wx.OK按钮)。

wx.SingleChoiceDialog(parent, message, caption,choices, style, pos)

参数:

  • parent:父窗口。
  • message:显示在对话框上的消息。
  • caption:对话框标题信息。
  • choices:包含选项的字符串数组或字符串列表。
  • style:对话框样式(位列表),包含从标准对话框样式中选择的标志和类文档中列出的标志。默认值为 CHOICEDLG_STYLE, 相当于 wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.OK | wx.CANCEL | wx.CENTRE。
  • pos:对话框位置,默认值为 wx.DefaultPosition。

常用方法:

  • GetSelection(self):返回当前选中项的索引。
  • GetStringSelection(self):返回当前选中的字符串。
  • SetSelection(self, selection):设置索引为 selection 的项初为始选中项。
  • ShowModal(self): 显示对话框,如果点击了 wx.OK 按钮则返回 wx.ID_OK,否则返回 wx.ID_CANCEL。
    def OnChangeDepth(self, e):choices  =  ["一",  "二",  "三",  "四", "五"]# dlg  =  wx.SingleChoiceDialog(None, "选择一个数字",  "选择",  choices)dlg = wx.SingleChoiceDialog(parent=None, message="选择一个数字", caption="单选", choices=choices)if dlg.ShowModal() == wx.ID_OK:txt = "当前的选择数字是: " + dlg.GetStringSelection()else:txt = "未选择" dlg.Destroy()

在这里插入图片描述

4.2. wx.GetSingleChoice

调用 wx.GetSingleChoce 全局方法,可以弹出一个单选列表对话框。

wx.GetSingleChoce(message, caption, choices, initialSelection, parent=None)

参数:

  • message:显示在对话框上的消息。
  • caption:对话框标题信息。
  • choices:包含选项的字符串数组或字符串列表。
  • initialSelection:初始选择索引值。
  • parent:父窗口。默认值为None。

wx.GetSingleChoice 返回的选中的字符串值。

    def OnChangeDepth(self, e):choices  =  ["一",  "二",  "三",  "四", "五"]# # dlg  =  wx.SingleChoiceDialog(None, "选择一个数字",  "选择",  choices)# dlg = wx.SingleChoiceDialog(parent=None, message="选择一个数字", caption="单选", choices=choices)# if dlg.ShowModal() == wx.ID_OK:#     txt = "当前的选择数字是: " + dlg.GetStringSelection()# else:#     txt = "未选择"# print(txt)# dlg.Destroy()txt = wx.GetSingleChoice("选择一个数字", "单选", choices, 1)print(txt)

效果同上。

4.3. wx.MultiChoiceDialog

wx.MultiChoiceDialog 实现一个显示字符串列表的对话框,它允许用户从该字符串列表中选择一个或多个字符串。

wx.MultiChoiceDialog (parent, message, caption,n,choices, style, pos)

参数:

  • parent:父窗口。
  • message:显示在对话框上的消息。
  • caption:对话框标题信息。
  • n:选择项的数量
  • choices:包含选项的字符串数组或字符串列表。
  • style:对话框样式(位列表),包含从标准对话框样式中选择的标志和类文档中列出的标志。默认值为CHOICEDLG_STYLE, 相当于wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.OK | wx.CANCEL | wx.CENTRE。
  • pos:对话框位置,默认值为 wx.DefaultPosition。

常用方法:

  • GetSelections(self):返回当前选中项的索引列表。
  • SetSelections(self, selections):设置初始选中项的索引列表。
  • ShowModal(self): 显示对话框,如果点击了 wx.OK 按钮则返回 wx.ID_OK,否则返回 wx.ID_CANCEL。
	def OnChangeDepth(self, e):choices  =  ["一",  "二",  "三",  "四", "五"]# # dlg  =  wx.SingleChoiceDialog(None, "选择一个数字",  "选择",  choices)# dlg = wx.SingleChoiceDialog(parent=None, message="选择一个数字", caption="单选", choices=choices)# if dlg.ShowModal() == wx.ID_OK:#     txt = "当前的选择数字是: " + dlg.GetStringSelection()# else:#     txt = "未选择"# print(txt)# dlg.Destroy()# txt = wx.GetSingleChoice("选择一个数字", "单选", choices, 1)# print(txt)dlg = wx.MultiChoiceDialog(None,  "选择一个数字",  "选择",  choices)if dlg.ShowModal()  ==  wx.ID_OK:sel = dlg.GetSelections()txt = "当前的选择数字是: " for index in sel:txt += choices[index]txt += " "else:txt = "未选择"print(txt)dlg.Destroy()

在这里插入图片描述

5. wx. ProgressDialog(进度对话框)

wx.ProgreessDialog 表示一个显示短消息和进度条的对话框。它提供了进度对话框的通用实现。它可以显示终止(ABORT)和跳过(SKIP)按钮,以及进度结束的消耗时间、剩余时间和估计时间。

尽管 wx.ProgressDialog 并不是真正的模式对话框,但它就像其它模式对话框一样,它应该创建在堆栈上,而不是堆上,应该像下面的代码这样使用它:

progdlg = wx.ProgressDialog(...)
for i in range(100):if not progdlg.Update(i):# Cancelled by user.break... do something time-consuming (but not too much) ...

窗口样式:

  • wx.PD_APP_MODAL:使进度对话框进入应用程序模式,即禁用所有应用程序窗口,只显示进度对话框。如果没有给出这个标志,它只是”局部”模式。
  • wx.PD_AUTO_HIDE:一旦达到进度表的最大值,进度对话框从界面上消失。如果不存在这种样式,一旦达到最大值,对话框就会变成模态对话框(请参阅wx.Dialog.ShowModal),并等待用户解除它。
  • wx.PD_SMOOTH:平滑进度控制(使用GA_SMOOTH模式的wx.Gauge控件)。
  • wx.PD_CAN_ABORT:这个标志告诉对话框它应该有一个“取消”按钮,用户可以按下这个按钮。如果发生这种情况,下一次调用Update将返回False。
  • wx.PD_CAN_SKIP:这个标志告诉对话框它应该有一个用户可以按下的“跳过”按钮。如果发生这种情况,下一次对Update的调用将在其skip参数中返回True。
  • wx.PD_ELAPSED_TIME:这个标志告诉对话框它应该显示流逝的时间(自创建对话框以来)。
  • wx.PD_ESTIMATED_TIME:这个标志告诉对话框它应该显示估计的时间。
  • wx.PD_REMAINING_TIME:这个标志告诉对话框它应该显示剩余时间。
	def OnChangeDepth(self, e):porgressMax = 100dlg = wx.ProgressDialog("进度条演示", "进度", porgressMax, style=wx.PD_CAN_ABORT|wx.PD_ELAPSED_TIME|wx.PD_REMAINING_TIME)keepGoing = Truecount = 0 while keepGoing and count < porgressMax:count += 1wx.MilliSleep(100)keepGoing = dlg.Update(count)dlg.Destroy()

在这里插入图片描述

6. wx.FileDialog(文件对话框)

6.1. wx.FileDialog

wx.FileDialog 构造函数支持设置文件的缺省路径:

  • 参数 defaultDir 指定要选择的文件所在的缺省文件夹,如果该参数为空白,则目录为当前文件夹;
  • 参数 defaultFile 为默认文件,如果该参数为空白,则不提供默认文件;
  • 参数 wardcard 为匹配通配符,wx.FileDialog 允许用户选择一个或者多个文件,在使用通配符的情况下,可以让用户才只选择关心的文件。例如,"BMP files (.bmp)|.bmp|GIF files (.gif)|.gif"只会显示和选择图片后缀类型是bmp和gif 的文件;
  • 参数 style 则指定对话框的打开样式。这些样式包括:
  • wx.FD_OPEN: 单个文件选择对话框;
  • wx.FD_SAVE: 文件保存对话框;
  • wx. FD_OVERWRITE_PROMPT: 只对保存对话框有效,当覆盖文件的时候,会弹出提醒对话框;
  • wx.FD_MULTIPLE:只对打开对话框有效,支持选择多个文件;
  • wx.FD_CHANGE_DIR:改变当前工作目录为用户选择的文件夹。

常用方法:

  • GetDirectory(self): 返回对话框默认的文件夹;
  • GetFilename(self): 返回对话框默认的文件名;
  • GetFilenames(self): 返回用户选择的文件列表;
  • GetFileIndex(self): 返回通配符参数中提供的默认筛列表的索引(可选);
  • GetMessage(self): 返回文件对话框的标题信息;
  • GetPath(self): 返回选择的文件的全路径(包括文件路径和文件名);
  • GetPaths(self): 在多选情况下,返回用户选择的文件全路径列表;
  • GetWildcard(self): 返回通配符;
  • SetDirectory(self, dir): 设置对话框默认的文件目录;SetFileName(self, name): 设置对话框默认的文件名;
  • SetFilterIndex(self, filterIndex): 设置默认筛选器索引,从0开始;
  • SetMessage(self, message): 设置对话框的标题信息;
  • SetPath(self, path): 设置默认选择的文件全路径名;
  • SetWildCard(self, wildcard): 设置对话框文件类型通配符;
  • ShowModal(self): 显示对话框,如果点击了wx.OK按钮则返回wx.ID_OK,否则返回wx.ID_CANCEL。
	def OnChangeDepth(self, e):porgressMax = 100fileFilter = "Image Files (*.bmp)|*.bmp|" "All files (*.*)|*.*"fileDialog =wx.FileDialog(self, message="选择单个文件", wildcard=fileFilter, style=wx.FD_OPEN)dialogResult = fileDialog.ShowModal()if dialogResult != wx.ID_OK:returnpath = fileDialog.GetPath()print(path)

在这里插入图片描述
选择单个文件, 其窗口样式参数为 wx.FD_OPEN,获得一个要打开的文件名;
保存文件, 其窗口样式参数为 wx.FA_SAVE,获得一个要保存的文件名;
保存文件并提醒,其窗口样式参数为 wx.FA_SAVE| wx. FD_OVERWRITE_PROMPT,在保存文件时,如果文件已存在,则显示提示信息;
多文件选择,其窗口样式参数为 wx.FD_OPEN| wx.FD_MULTIPLE。

https://wintel.blog.csdn.net/article/details/130788682?spm=1001.2014.3001.5502

6.2. wx.FileSelector

调用 wx.FileSelector 全局方法, 可以弹出一个文件选择对话框,该方法的原型为:

wx.FileSelector(message, defautPath, defaultFile, defaultExtension, wildcard, flags, parent, x, y)

参数:

  • message: 文件选择器的标题。
  • defautPath: 默认路径,缺省为空白。
  • defaultFile:默认文件名,缺省为空白。
  • defaultExtension:默认文件扩展名,缺省为空白。
  • wildcard:通配符,缺省为“.”。
  • parent:父窗口。
  • x:选择器水平显示位置。
  • y:选择器垂直显示位置。
	def OnChangeDepth(self, e):fileFilter = "Image Files (*.bmp)|*.bmp|" "All files (*.*)|*.*"# filename = wx.FileSelector("选择单个文件", "", "", "js", fileFilter, wx.FD_OPEN, self)filename = wx.FileSelector(message="", default_path="", default_filename="", default_extension="", wildcard=fileFilter, flags=wx.FD_OPEN, parent=self)print(filename)

效果同上。

7. wx.DirDialog(目录对话框)

7.1. wx.DirDialog

wx.DirDialog提供一个目录选择对话框。
窗口样式:

  • wx.DD_DEFAULT_STYLE: 等价于wx.DEFAULT_DIALOG_STYLE和wx.RESIZE_BORDER的组合;
  • wx.DD_DIR_MUST_EXIST: 在这种样式下,对话框将允许用户选择一个现有的文件夹, 当参数中没有设置这种样式时,将在对话框中添加”创建新目录”按钮(在Windows上)或者提供其他方式让用户输入新文件夹的名称;
  • wx.DD_CHANGE_DIR: 将当前工作目录更改为用户选择的目录。该标志不能与wx.DD_MULTIPLE 一起使用;
  • wx.DD_MULTIPLE: 允许用户选择多个目录。该标志仅在wxWidgtes 3.1.4之后的版本才可用。
  • wx.DD_SHOW_HIDDEN: 显示隐藏文件夹和系统文件夹。该标志仅在wxWidgtes 3.1.4之后的版本才可用。

注意:RESIZE_BORDER在Windows下有新旧两种不同的目录选择对话框可以使用,旧版本中的对话框大小是固定的,RESIZE_BORDER隐式地选择新版本的对话框。在通常情况下新版本更符合程序要求,除非需要显式地在Window下使用旧的对话框版本,建议始终使用RESIZE_BORDER样式来创建对话框。
常用方法:

  • GetMessage(self): 返回文件对话框的标题信息;
  • GetPath(self): 返回缺省或者用户选择的文件夹,本方法不同用于带有 样式DD_MULTIPLE的窗口中;
  • GetPaths(self, paths): 将选择的文件的全部路径填充到参数paths中;
  • SetMessage(self, message): 设置对话框的标题信息;
  • SetPath(self, path): 设置默认选择的文件路径;
  • ShowModal(self): 显示对话框,如果点击了wx.OK按钮则返回wx.ID_OK,否则返回wx.ID_CANCEL。
        dlg = wx.DirDialog(self, message="选择一个文件夹", style=wx.DD_DEFAULT_STYLE)if dlg.ShowModal() == wx.ID_OK:path = dlg.GetPath()else:path = ""print(path)        dlg.Destroy()

效果同上,获取目录。

7.2. wx.DirSelector

调用 wx.DirSelector 全局方法,可以弹出一个目录选择对话框。

wx.DirSelector(message, defaultPath, style, pos,parent)

参数:

  • message: 文件选择器的标题。
  • defautPath: 默认路径,默认为空白。
  • style:对话框风格,参见wx.DirDialog,缺默认值为0。
  • pos:对话框位置,默认值为wx.DefaultPosition。
  • parent: 父窗口,默认值为空。
        dir = wx.DirSelector("选择一个文件夹")print(dir)

效果同上,获取目录。
https://wintel.blog.csdn.net/article/details/130788696?spm=1001.2014.3001.5502

8. wx.ColourDialog(颜色对话框)

https://wintel.blog.csdn.net/article/details/130788730?spm=1001.2014.3001.5502

9. FontDialog(字体对话框)

https://wintel.blog.csdn.net/article/details/130788754?spm=1001.2014.3001.5502

10. wx.PrintDialog(打印)

10.1. wx.PrintDialog

10.1. wx.PrintDialogData

10.1. wx.PageSetupDialog

https://wintel.blog.csdn.net/article/details/130894571?spm=1001.2014.3001.5502

11. wx. FindReplaceDialog(查找替换)

11.1. wx. FindReplaceDialog

11.2. wx.FindReplaceData

https://wintel.blog.csdn.net/article/details/130894657?spm=1001.2014.3001.5502

12. wx.adv.Wizard

https://wintel.blog.csdn.net/article/details/130894723?spm=1001.2014.3001.5502

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91766.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB科研数据可视化技术

互联网的飞速发展伴随着海量信息的产生&#xff0c;而海量信息的背后对应的则是海量数据。如何从这些海量数据中获取有价值的信息来供人们学习和工作使用&#xff0c;这就不得不用到大数据挖掘和分析技术。数据可视化分析作为大数据技术的核心一环&#xff0c;其重要性不言而喻…

文明存续的时间博弈:论地球资源枯竭临界期的技术突围与行动紧迫性

摘要当地球资源消耗以指数级速度逼近生态承载力极限&#xff0c;人类文明正面临“存续还是消亡”的终极抉择。本文基于地球资源枯竭的实证数据与技术突破的可行性分析&#xff0c;揭示文明存续的时间窗口已进入不可逆临界期&#xff08;2040-2070年&#xff09;&#xff0c;论证…

Elasticsearch 8.19.0 和 9.1.0 中 LogsDB 和 TSDS 的性能与存储改进

作者&#xff1a;来自 Elastic Martijn Van Groningen 探索 TSDS 和 LogsDB 的最新增强功能&#xff0c;包括优化 I/O、提升合并性能等。 Elasticsearch 带来了许多新功能&#xff0c;帮助你为你的使用场景构建最佳搜索解决方案。通过我们的示例笔记本深入学习&#xff0c;开始…

cs336之注意pytorch的tensor在哪里?(assert的使用)

问题 记住&#xff1a;无论何时你在pytorch中有一个张量tensor&#xff0c;你应该始终问一个问题&#xff1a;它当前位于哪里&#xff1f; 注意它在CPU还是在GPU中。要判断它在哪里&#xff0c;可以使用python的assert断言语句。 assert断言 在 Python 中&#xff0c;assert 是…

Mysql 分区表

分区表是将一张表分成多张独立子表&#xff0c;每个子表是一个区&#xff0c;目的是提高查询效率。 从 server 层来看&#xff0c;只有一张表。但是从引擎层来看&#xff0c;是多张表&#xff0c;对应多个.idb文件。引擎层访问数据只访问特定分区表&#xff0c;也只对特定分区表…

Makefile 入门与实践指南

Makefile 是用于 make 工具的配置文件&#xff0c;它定义了如何编译和链接你的项目&#xff0c;让构建过程自动化。一、核心概念 make 的核心思想是 “目标”&#xff08;Target&#xff09; 和 “依赖”&#xff08;Dependencies&#xff09;&#xff1a; 目标 (Target)&#…

分布式微服务--Nacos作为配置中心(补)关于bosststrap.yml与@RefreshScope

一、关于bosststrap.yml✅ bootstrap.yml 和 application.yml 的区别对比项bootstrap.ymlapplication.yml加载时机优先于 application.yml 加载&#xff08;启动早期&#xff09;程序初始化完成后加载主要用途设置应用的外部配置源、注册中心信息等设置应用内部配置&#xff0c…

[Qt]QString 与Sqlite3 字符串互动[汉字不乱码]

环境&#xff1a;Qt C&#xff08;msvc c&#xff09;1.将与数据库交互的代码文件编码转换为utf-8-bom编码&#xff0c;&#xff08;可使用notepad 进行转换&#xff09;2.在代码文件头文件中加上下面代码。//vs2010 版本是 1600 #if defined(_MSC_VER) && (_MSC_VER &…

SpringBoot启动项目详解

SpringBoot 的启动过程是一个整合 Spring 核心容器、自动配置、嵌入式服务器等功能的复杂流程&#xff0c;核心目标是 “简化配置、快速启动”。下面从入口类开始&#xff0c;逐步拆解其详细启动步骤&#xff1a;一、启动入口&#xff1a;SpringBootApplication与main方法Sprin…

PCB 控深槽如何破解 5G 基站 120℃高热魔咒?

5G 基站在高频通信下的功耗较 4G 基站提升 3-4 倍&#xff0c;射频模块、电源单元等核心部件的工作温度常突破 120℃&#xff0c;远超设备安全阈值&#xff08;≤85℃&#xff09;&#xff0c;形成制约通信稳定性的 “高热魔咒”。印制线路板&#xff08;PCB&#xff09;作为热…

NEXT.js 打包部署到服务器

在网上查了一下&#xff0c;记录一下1.首先执行打包命令&#xff0c;我这个项目是用的pnpm&#xff0c;可以根据项目需求使用 npm 或者别的pnpm run build2.打包完成后会有一个 .next 的文件夹&#xff0c;需要把下图的这些文件放到服务器。服务器需要有node环境之后就需要执行…

【AI分析】uv库自动安装脚本uv-installer-0.8.3.ps1分析

目录uv 安装脚本完整分析报告1. 脚本概述2. 参数解析3. 环境变量控制4. 核心函数详解a. Install-Binary&#xff08;主控函数&#xff09;b. Get-TargetTriple&#xff08;架构检测&#xff09;c. Download&#xff08;下载处理&#xff09;d. Invoke-Installer&#xff08;安装…

etcd 的安装与使用

介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统&#xff0c;用于配置共享和服 务发现等。它使用 Raft 一致性算法来保持集群数据的一致性&#xff0c;且客户端通过长连接 watch 功能&#xff0c;能够及时收到数据变化通知&#xff0c;相较于 Zookeeper 框…

conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正

详细问题 PS C:\Users\wh109> conda init powershell conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正 确&#xff0c;然后再试一次。 所在位置 行:1 字符: 1conda init pow…

HQChart实战教程58:K线主图仿TradingView实现

本文将详细介绍如何使用HQChart实现类似TradingView风格的K线主图,包含完整的代码实现和详细注释,适合金融图表开发者和量化交易爱好者阅读。 一、TradingView风格特点分析 在开始实现前,我们先分析TradingView的K线主图核心特点: 简洁现代的UI设计:深色背景、清晰的网格…

GitPython08-源码解读

GitPython08-源码解读 1-核心知识 1&#xff09;gitPython核心代码很多都是对git命令返回的结果进行解析&#xff0c;在此补充git命令的返回内容2&#xff09;git ls-tree -> 查看某个提交或分支所对应的目录树3&#xff09;源码中Tree对应的业务逻辑 -> 获取git ls-tre…

中科院开源HYPIR图像复原大模型:1.7秒,老照片变8K画质

目录 前言 一、告别“龟速”艺术家&#xff0c;拥抱“闪电”打印机 二、不止是高清&#xff1a;它看得懂文字&#xff0c;更能理解你的心意 2.1 首先&#xff0c;它是位“文字保卫者” 2.2 其次&#xff0c;它还是个“细节创造家” 2.3 最后&#xff0c;它是一个能“听懂…

设计Mock华为昇腾GPU的MindSpore和CANN的库的流程与实现

在没有华为昇腾GPU可用的情况下用C库写一个Mock MindSpore和CANN的库&#xff0c;调用多核CPU和内存的资源来模拟GPU的算力&#xff0c;调试MindSpore和CANN的C代码&#xff0c;做这个库的基本流程步骤和详细设计是什么&#xff1f; 要创建一个Mock库来模拟华为昇腾GPU&#xf…

【AI问答记录】grafana接收query请求中未携带step参数,后端基于intervalMs和maxDataPoints等参数计算step的逻辑

让我详细分析Grafana源码中计算step的完整逻辑&#xff0c;它确实比简单的intervalMs/1000复杂得多。 完整的Step计算流程 1. 入口点&#xff1a;[models.Parse](file://F:\JavaProject\grafana-release-11.2.0\pkg\promlib\models\query.go#L190-L274)函数 在pkg/promlib/mode…

再谈亚马逊云科技(AWS)上海AI研究院7月22日关闭事件

【科技明说 &#xff5c; 科技热点关注】亚马逊云科技&#xff08;AWS&#xff09;上海AI研究院已于2025年7月22日正式解散&#xff0c;这是亚马逊在全球范围内的最后一个海外研究中心的关闭。这个消息是否是真的&#xff0c;目前得到的印证来自其研发中心的首席科学家王敏捷在…