目錄
1、對話框QDialog類別
2、通用對話框
??編輯
3、消息對話框QMessageBox()?
1)消息對話框QMessageBox類型
2)案例
??編輯
?4、輸入對話框QInputDialog
1) 類型
?2)案例
5、字體格式對話框QFontDialog
?6、顏色對話框QColorDialog
1)獲取顏色
2)利用顏色對話框修改字體顏色和背景色
①字體顏色設置
?②字體背景色設置
③完整代碼
注意:這種方法背景色和字體顏色無法同時修改?
7、文件對話框
1)選擇指定后綴名的文件
方法一
?方法二
2)打開一個文件夾
3)利用QFileDialog實現圖片選擇和文件加載
1、對話框QDialog類別
QMessage——信息提示框
QColorDialog——顏色對話框
QFIleDialog——文件操作對話框
QFontDialog——字體格式對話框
QInputDialog——輸入對話框
2、通用對話框
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/25 18:16
# @Author : @linlianqin
# @Site :
# @File : QDialog_learn.py
# @Software: PyCharm
# @description:from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 通用對話框
class QDialogDemo(QMainWindow):def __init__(self):super(QDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("Qdialog Demo")self.btn1 = QPushButton("彈出對話框",self)self.btn1.move(50,50)# 點擊按鈕彈出對話框self.btn1.clicked.connect(self.showDialog)# 創建對話框,點擊按鈕關閉def showDialog(self):dialog = QDialog()dialog.resize(200,100)dialog.setWindowTitle("對話框")btn = QPushButton("關閉",dialog) # 在dialog中創建按鈕btn.move(50,50)btn.clicked.connect(dialog.close)# 將對話框設置為APP模式,即對話框未關閉時,沒有辦法對主窗口的控件進行操作# 進入app循環dialog.exec()if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QDialogDemo()mainWin.show()sys.exit(app.exec_())
?
?注:
1)當有多個窗口時,并且在不同的窗口創建控件時,需要指明其父類是誰
self.btn1 = QPushButton("彈出對話框",self)btn = QPushButton("關閉",dialog) # 在dialog中創建按鈕2)創建一個新的對話框窗口時,不要忘記加上exec(),進入循環
dialog.exec()
3、消息對話框QMessageBox()?
1)消息對話框QMessageBox類型
關于對話框——about
錯誤對話框——critical
警告對話框——warning
提問對話框——question
消息對話框——information
注:上述幾種不同的消息對話框主要是顯示的按鈕不一樣,且圖標不一樣
2)案例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/25 18:30
# @Author : @linlianqin
# @Site :
# @File : QMessageBox_learn.py
# @Software: PyCharm
# @description:from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 通用對話框
class QMessageBoxDemo(QWidget):def __init__(self):super(QMessageBoxDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("Qdialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("關于對話框")self.btn2 = QPushButton("錯誤對話框")self.btn3 = QPushButton("警告對話框")self.btn4 = QPushButton("消息對話框")self.btn5 = QPushButton("提問對話框")layout.addWidget(self.btn1)layout.addWidget(self.btn2)layout.addWidget(self.btn3)layout.addWidget(self.btn4)layout.addWidget(self.btn5)# 點擊按鈕彈出對話框self.btn1.clicked.connect(self.showDialog)self.btn2.clicked.connect(self.showDialog)self.btn3.clicked.connect(self.showDialog)self.btn4.clicked.connect(self.showDialog)self.btn5.clicked.connect(self.showDialog)self.setLayout(layout)# 創建對話框,點擊按鈕關閉def showDialog(self):text = self.sender().text()if text == "關于對話框":QMessageBox.about(self,"關于","關于對話框")elif text == "錯誤對話框":QMessageBox.critical(self,"錯誤","錯誤對話框")if text == "警告對話框":QMessageBox.warning(self,"關于","關于對話框")if text == "消息對話框":QMessageBox.information(self,"消息","消息對話框")if text == "提問對話框":QMessageBox.question(self,"提問","提問對話框")# 消息對話框
if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QMessageBoxDemo()mainWin.show()sys.exit(app.exec_())
?
?
?4、輸入對話框QInputDialog
1) 類型
QInputDialog.getItem——傳入列表或者元組
QInputDialog.getText——錄入文本
QInputDialog.getInt——錄入整數
?2)案例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/25 18:47
# @Author : @linlianqin
# @Site :
# @File : QInputDialog_learn.py
# @Software: PyCharm
# @description:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 輸入對話框
class QInputDialogDemo(QWidget):def __init__(self):super(QInputDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("Qdialog Demo")layout = QFormLayout()self.btn1 = QPushButton("獲取列表中的選項")self.btn1.clicked.connect(self.getItem)self.line1 = QLineEdit()layout.addRow(self.btn1,self.line1)self.btn2 = QPushButton("獲取字符串")self.btn2.clicked.connect(self.getText)self.line2 = QLineEdit()layout.addRow(self.btn2,self.line2)self.btn3 = QPushButton("獲取整數")self.btn3.clicked.connect(self.getInt)self.line3 = QLineEdit()layout.addRow(self.btn3,self.line3)self.setLayout(layout)def getItem(self):items = ["C","C++","Python"]item,ok = QInputDialog.getItem(self,"請選擇編程語言","語言列表",items)if ok and item:self.line1.setText(item)def getText(self):text,ok = QInputDialog.getText(self,"文本輸入框","輸入姓名")if ok and text:self.line2.setText(text)def getInt(self):num,ok = QInputDialog.getInt(self,"整數輸入框","輸入年齡")if ok and num:self.line3.setText(str(num))if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QInputDialogDemo()mainWin.show()sys.exit(app.exec_())
?
?
5、字體格式對話框QFontDialog
通過這個對話框可以設置字體類型、字體大小,返回的是一個元組,元組包含字體格式和一個bool類型
font,ok = QFontDialog.getFont()
font,ok = QFontDialog.getFont()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/26 10:14
# @Author : @linlianqin
# @Site :
# @File : QFontDialog_learn.py
# @Software: PyCharm
# @description:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 字體格式對話框
class QFontDialogDemo(QWidget):def __init__(self):super(QFontDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("QFontDialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("字體格式")self.label = QLabel("字體格式測試樣例")self.btn1.clicked.connect(self.changeFont)layout.addWidget(self.btn1)layout.addWidget(self.label)self.setLayout(layout)def changeFont(self):font,ok = QFontDialog.getFont()if ok:self.label.setFont(font)if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QFontDialogDemo()mainWin.show()sys.exit(app.exec_())
?
修改字體格式后:
?
?6、顏色對話框QColorDialog
1)獲取顏色
foreColor = QColorDialog.getColor()返回QColor類
2)利用顏色對話框修改字體顏色和背景色
①字體顏色設置
def setForeColor(self):# 通過顏色對話框得到顏色foreColor = QColorDialog.getColor()# 設置文字顏色p = QPalette()p.setColor(QPalette.WindowText,foreColor)self.label.setPalette(p)
?②字體背景色設置
def setBgColor(self):# 設置背景色bgColor = QColorDialog.getColor()p = QPalette()p.setColor(QPalette.Window,bgColor)self.label.setAutoFillBackground(True)self.label.setPalette(p)
③完整代碼
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/26 10:23
# @Author : @linlianqin
# @Site :
# @File : QColorDialog_learn.py
# @Software: PyCharm
# @description:from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 顏色對話框
class QColorDialogDemo(QWidget):def __init__(self):super(QColorDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("QColorDialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("設置字體顏色")self.btn2 = QPushButton("設置背景色")self.label = QLabel("顏色對話框測試")self.btn1.clicked.connect(self.setForeColor)self.btn2.clicked.connect(self.setBgColor)layout.addWidget(self.btn1)layout.addWidget(self.btn2)layout.addWidget(self.label)self.setLayout(layout)def setForeColor(self):# 通過顏色對話框得到顏色foreColor = QColorDialog.getColor()# 設置文字顏色p = QPalette()p.setColor(QPalette.WindowText,foreColor)self.label.setPalette(p)def setBgColor(self):# 設置背景色bgColor = QColorDialog.getColor()p = QPalette()p.setColor(QPalette.Window,bgColor)self.label.setAutoFillBackground(True)self.label.setPalette(p)if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QColorDialogDemo()mainWin.show()sys.exit(app.exec_())
?
設置字體顏色
?
?設置背景色
注意:這種方法背景色和字體顏色無法同時修改?
7、文件對話框
PyQt5之QFileDialog_Anony吧的博客-CSDN博客_pyqt5 qfiledialogPyQt5之QFileDialogQFileDialog是用于打開和保存文件的標準對話框,QFileDialog在打開文件時使用了文件過濾器,用于顯示指定擴展名的文件。也可以設置使用QFileDialog打開文件時的起始目錄和指定擴展名的文件。一、QFileDialog類中的常用方法方法描述getOpenFileName()返回用戶所選擇的文件名稱,并打開該文件getSaveFileName()使用用戶選擇的文件名保存文件setFilter()設置過濾器,只顯https://blog.csdn.net/qq_44880255/article/details/106979791?
QFileDialog是用于打開和保存文件的標準對話框,QFileDialog在打開文件時使用了文件過濾器,用于顯示指定擴展名的文件。也可以設置使用QFileDialog打開文件時的起始目錄和指定擴展名的文件。?
?
?
# 選擇后綴名為,jpg和.png的圖片文件,并顯示在label中 frame,_ = QFileDialog.getOpenFileName(self,"打開文件",".","Image files (*.jpg;*.png)")
1)選擇指定后綴名的文件
方法一
def loadImage(self):# 選擇后綴名為,jpg和.png的圖片文件,并顯示在label中frame,_ = QFileDialog.getOpenFileName(self,"打開文件",".","Image files (*.jpg;*.png)")print(frame)self.imageLabel.setPixmap(QPixmap(frame))
?方法二
def loadText(self):dialog = QFileDialog()dialog.setFileMode(QFileDialog.AnyFile)dialog.setFilter(QDir.Files)if dialog.exec():filenames = dialog.selectedFiles()print(filenames)with open(filenames[0],encoding = "utf-8",mode='r') as f:data = f.read()self.contents.setText(data)
2)打開一個文件夾
def openDir(self):fname = QFileDialog.getExistingDirectory(self,"打開文件夾",".")self.DirLabel.setText("選擇文件夾:"+fname)
3)利用QFileDialog實現圖片選擇和文件加載
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/5/26 10:57
# @Author : @linlianqin
# @Site :
# @File : QFileDialog_learn.py
# @Software: PyCharm
# @description:# 文件對話框
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sysclass QFileDialogDemo(QWidget):def __init__(self):super(QFileDialogDemo, self).__init__()self.InitUI()def InitUI(self):# self.resize(300)self.setWindowTitle("QFileDialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("加載圖片")self.btn1.clicked.connect(self.loadImage)layout.addWidget(self.btn1)self.btn2 = QPushButton("加載文本")self.btn2.clicked.connect(self.loadText)layout.addWidget(self.btn2)self.btn3 = QPushButton("選擇文件夾")self.btn3.clicked.connect(self.openDir)layout.addWidget(self.btn3)self.DirLabel = QLabel("文件夾名稱")layout.addWidget(self.DirLabel)self.imageLabel = QLabel("----------")layout.addWidget(self.imageLabel)self.contents = QTextEdit()layout.addWidget(self.contents)self.setLayout(layout)def loadImage(self):# 選擇后綴名為,jpg和.png的圖片文件,并顯示在label中frame,_ = QFileDialog.getOpenFileName(self,"打開文件",".","Image files (*.jpg;*.png)")print(frame)self.imageLabel.setPixmap(QPixmap(frame))def loadText(self):dialog = QFileDialog()dialog.setFileMode(QFileDialog.AnyFile)dialog.setFilter(QDir.Files)if dialog.exec():filenames = dialog.selectedFiles()print(filenames)with open(filenames[0],encoding = "utf-8",mode='r') as f:data = f.read()self.contents.setText(data)def openDir(self):fname = QFileDialog.getExistingDirectory(self,"打開文件夾",".")self.DirLabel.setText("選擇文件夾:"+fname)if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QFileDialogDemo()mainWin.show()sys.exit(app.exec_())
初始界面:
?選擇圖像對話框:
選擇文本對話框
選擇文件夾對話框:
?
?
?結果
?