Python個(gè)人學(xué)習(xí)筆記 PyQt5——對(duì)話框
對(duì)話框?
????內(nèi)置對(duì)話框
????自定義對(duì)話框
文件對(duì)話框
????選擇文件
????選擇文件夾
????選擇文件鏈接
????選擇保存路徑/鏈接
輸入對(duì)話框
????單行文本框 / 多行文本框
????整數(shù)數(shù)字選擇 / 小數(shù)數(shù)字選擇
????下拉組合框
字體對(duì)話框 / 顏色對(duì)話框

對(duì)話框
(QtWidgets.)QMessageBox類
內(nèi)置對(duì)話框與按鈕
內(nèi)置的對(duì)話框類型
⑴ 消息對(duì)話框:QMessageBox.information()
⑵ 問(wèn)答對(duì)話框:QMessageBox.question()
⑶ 警告對(duì)話框:QMessageBox.warning()
⑷ 錯(cuò)誤對(duì)話框:QMessageBox.critical()
⑸ 關(guān)于對(duì)話框:QMessageBox.about()
⑴~⑷的參數(shù)都為 (parent ,title ,text ,buttons ,defaultbutton)
parent:對(duì)話框所屬窗口。
title:對(duì)話框標(biāo)題。
text:對(duì)話框文本。
buttons:對(duì)話框的按鈕。默認(rèn)為一個(gè)OK按鈕。
defaultbutton:默認(rèn)選中按鈕。若未指定,則默認(rèn)為第一個(gè)按鈕。
關(guān)于對(duì)話框的參數(shù)為 (parent ,caption ,text)
parent:所屬窗口。
caption:標(biāo)題。
text:文本。
按鈕類型
⑴ 確認(rèn):QMessageBox.Ok
⑵ 確認(rèn):QMessageBox.Yes
⑶ 取消:QMessageBox.No
⑷ 中止:QMessageBox.Abort
⑸ 重試:QMessageBox.Retry
⑹ 忽略:QMessageBox.Ignore
⑺ 關(guān)閉:QMessageBox.Close
⑻ 取消:QMessageBox.Cancel
⑼ 打開(kāi):QMessageBox.Open
⑽ 保存:QMessageBox.Save
在一個(gè)對(duì)話框中添加多個(gè)按鈕時(shí),用 | 或運(yùn)算符連接。
未進(jìn)行連接動(dòng)作(函數(shù))時(shí),這些按鈕都不具有任何功能,只是標(biāo)識(shí)符不同,在代碼中用于識(shí)別按鈕的選擇。比如完全可以讓QMessageBox.No連接打開(kāi)文件的功能,而讓QMessageBox.Open連接關(guān)閉窗口功能。
點(diǎn)擊按鈕后,QMessageBox會(huì)返回一個(gè)按鈕類型的值,可用于判斷執(zhí)行相應(yīng)操作。

自定義對(duì)話框與按鈕
內(nèi)置的對(duì)話框的可添加按鈕的類型是固定的。需要自定義對(duì)話框才能添加自定義按鈕。
自定義按鈕類型
自定義按鈕需要指定按鈕的種類。
⑴ QMessageBox.AcceptRole
表示用戶接受某個(gè)操作、確認(rèn)或同意某個(gè)選項(xiàng)的意圖。通常對(duì)應(yīng)于用戶單擊對(duì)話框中的 "確定" 或 "是" 按鈕。
⑵ QMessageBox.RejectRole
表示用戶拒絕某個(gè)操作或取消某個(gè)選項(xiàng)的意圖。通常對(duì)應(yīng)于用戶單擊對(duì)話框中的 "取消" 或 "否" 按鈕。
⑶ QMessageBox.YesRole
表示用戶選擇 "是" 的意圖。通常對(duì)應(yīng)于用戶單擊對(duì)話框中的 "是" 按鈕。
⑷ QMessageBox.NoRole
表示用戶選擇 "否" 的意圖。通常對(duì)應(yīng)于用戶單擊對(duì)話框中的 "否" 按鈕。
⑸ QMessageBox.DestructiveRole
表示用戶執(zhí)行具有破壞性或危險(xiǎn)性的操作的意圖。通常對(duì)應(yīng)于用戶單擊對(duì)話框中的 "刪除" 或 "危險(xiǎn)" 按鈕。
⑹ QMessageBox.HelpRole
表示用戶請(qǐng)求幫助或獲取更多信息的意圖。通常對(duì)應(yīng)于用戶單擊對(duì)話框中的 "幫助" 按鈕。

區(qū)分多個(gè)同類型按鈕

文件對(duì)話框
(QtWidgets.)QFileDialog類
選擇文件
QFileDialog.getOpenFileName() /?QFileDialog.getOpenFileNames()
選擇單個(gè)/多個(gè)文件。
返回 文件路徑/文件路徑列表 和所用到的過(guò)濾器。
參數(shù)
????parent:指定父級(jí)窗口,用于將文件選擇對(duì)話框作為其子窗口顯示。默認(rèn)為 None。
????caption:指定文件選擇對(duì)話框的標(biāo)題。默認(rèn)為一個(gè)空字符串。
????directory:指定對(duì)話框打開(kāi)時(shí)顯示的目錄路徑。默認(rèn)為當(dāng)前工作目錄。
????filter:指定文件過(guò)濾器,用于限制用戶可以選擇的文件類型。默認(rèn)為空字符串,表示不使用任何過(guò)濾器。
????initialFilter:指定初始的文件過(guò)濾器,用于在對(duì)話框中設(shè)置默認(rèn)的過(guò)濾器選項(xiàng)。默認(rèn)為空字符串。
過(guò)濾器filter
在括號(hào)中寫入指定的文件格式,多個(gè)格式用空格分開(kāi)。括號(hào)前可以寫提示,也可以不寫。
多個(gè)過(guò)濾器用雙分號(hào)隔開(kāi)。

例:選擇圖片,將路徑加到視圖,單擊可預(yù)覽圖片。


選擇文件夾
QFileDialog.getExistingDirectory()
返回文件夾路徑。
參數(shù)
????parent:指定父級(jí)窗口,用于將目錄選擇對(duì)話框作為其子窗口顯示。默認(rèn)為 None。
????caption:指定目錄選擇對(duì)話框的標(biāo)題。默認(rèn)為一個(gè)空字符串。
????directory:指定對(duì)話框打開(kāi)時(shí)顯示的目錄路徑。默認(rèn)為當(dāng)前工作目錄。
????options:指定對(duì)話框的選項(xiàng)。可以使用 QFileDialog.Options 中的標(biāo)志進(jìn)行組合。默認(rèn)為 0,即無(wú)特殊選項(xiàng)。


選擇文件鏈接
QFileDialog.getOpenFileUrl() /?QFileDialog.getOpenFileUrls()
選擇單個(gè)/多個(gè)文件鏈接。
返回 文件鏈接/文件鏈接列表 和一個(gè)過(guò)濾器。
參數(shù)與?QFileDialog.getOpenFileName() 相同。
toLocalFile()
將鏈接轉(zhuǎn)化為路徑。
QtGui.QDesktopServices.openUrl()
直接打開(kāi)鏈接。也可以直接打開(kāi)網(wǎng)頁(yè)鏈接。

選擇保存路徑/鏈接
QFileDialog.getSaveFileName() /?QFileDialog.getSaveFileUrl()
參數(shù)與?QFileDialog.getOpenFileName() 相同。

輸入對(duì)話框
(QtWidgets.)QInputDialog類。
單行文本框 / 多行文本框
QInputDialog.getText() /?QInputDialog.getMultiLineText()
返回值是一個(gè)元組 (text, ok_pressed)。
text為輸入的內(nèi)容。ok_pressed為一個(gè)布爾值,True表示點(diǎn)擊了確認(rèn),F(xiàn)alse表示點(diǎn)擊了取消或者關(guān)閉。
參數(shù):
????parent:所屬窗口。
????title:標(biāo)題。
????label:文本。
????echo:文本框內(nèi)容顯示方式。
????text:默認(rèn)顯示內(nèi)容。
????flags:窗口標(biāo)志。可參考PyQt5——窗口。
多行文本框少一個(gè)echo參數(shù)。
echo參數(shù)的顯示方式:
????QtWidgets.QLineEdit.Normal:默認(rèn)的回顯模式,以明文方式顯示文本。
????QtWidgets.QLineEdit.NoEcho:不回顯文本,用于輸入敏感信息。
????QtWidgets.QLineEdit.Password:以密碼模式回顯文本,用于輸入密碼,字符將被顯示為掩碼字符。


整數(shù)數(shù)字選擇 / 小數(shù)數(shù)字選擇
QInputDialog.getInt() /?QInputDialog.getDouble()
返回值是一個(gè)元組 (value,?ok_pressed)。
參數(shù):
????parent:所屬窗口。
????title:標(biāo)題。
????label:文本。
????value:默認(rèn)值。
????min:最小值。
????max:最大值。
????step(整數(shù)數(shù)字選擇):點(diǎn)擊箭頭改變的值的大小。decimals(小數(shù)數(shù)字選擇):精度。
????flags:窗口標(biāo)志。


下拉組合框
QInputDialog.getItem()
返回值是一個(gè)元組 (text, ok_pressed)。
參數(shù):
????parent:所屬窗口。
????title:標(biāo)題。
????label:文本。
????items:選項(xiàng)列表。元素必須為字符串類型。
????current:默認(rèn)選項(xiàng)。為一個(gè)整數(shù),表示選項(xiàng)的索引。
????editable:是否可被編輯。
????flags:窗口標(biāo)志。


字體對(duì)話框
QtWidgets.QFontDialog.getFont()
返回值是一個(gè)元組 (font,?ok_pressed)。
font為QFont對(duì)象。
可用 setFont() 設(shè)置字體。
顏色對(duì)話框
QtWidgets.QColorDialog.getColor()
返回一個(gè)QColor對(duì)象。
可用 setStyleSheet(f'color:{color.name()};')?設(shè)置字體顏色。
