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
英文地址,請注明出處:http://en.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;目前得到的印證來自其研發中心的首席科學家王敏捷在…