Pyqt5学习笔记五、PYQT5对话框使用
五、PYQT之对话框
在PyQt5中,常用的对话框有QMessageBox内置对话框、QFileDialog对话框、QInputDialog对话框、QFontDialog对话框和QColorDialog对话框。
1、QMessageBox:对话框
五种对话框
对话框的使用方法
QMessageBox.information(QWidget, 'Title', 'Content', buttons, defaultbutton)
QWidget:self或者窗口对象,表示该对话框所属的窗口。
Title:字符串,表示对话框的标题。
Content:字符串,表示对话框中的提示内容。
buttons:对话框上要添加的按钮,多个按钮之间用“|”来连接,常见的按钮种类如表13.2所示,该值可选,没有指定该值时,默认为OK按钮。
defaultbutton:默认选中的按钮,该值可选,没有指定该值时,默认为第一个按钮。 表13.2
对话框按钮种类
#QMessageBox.about()关于对话框中不能指定按钮。其语法如下:
QMessageBox.about(QWidget, 'Title', 'Content')
与对话框进行交互
实际开发时,可能会需要根据对话框的返回值执行相应的操作,PyQt5中的QMessageBox对话框支持获取返回值,例如,修改【实例13.1】中的消息对话框的槽函数,使其弹出一个带有“Yes”和“No”按钮的对话框,然后判断当用户单击“Yes”按钮时,弹出“您同意了本次请求……”的信息提示。
2、QFileDialog:文件对话框
PyQt5中的文件对话框使用QFileDialog类表示,该类继承自QDialog类,它允许用户选择文件或者文件夹,也允许用户遍历文件系统,以便选择一个或多个文件或者文件夹。
使用QFileDialog选择文件
import sys
from PyQt5 import QtCore,QtWidgets,QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class demo(QMainWindow):
def __init__(self):
super(demo, self).__init__()
self.setupUi()
def setupUi(self):
self.setObjectName("fileDialog")
self.resize(480,300)
self.setWindowTitle("这是一个文件对话框测试")
#创建打开对话框按钮
self.pushButton=QPushButton(self)
self.pushButton.setObjectName("pushbutton")
self.pushButton.setGeometry(QtCore.QRect(20,10,190,30))
self.pushButton.setText("打开文件对话框")
#创建listwidget 用来显示选择的图片文件夹
self.listWidget=QListWidget(self)
self.listWidget.setGeometry(QtCore.QRect(20,45,440,240))
self.listWidget.setObjectName('listwidget')
#绑定信号
self.pushButton.clicked.connect(self.bindlist)
def bindlist(self):
dir=QFileDialog()
dir.setFileMode(QFileDialog.ExistingFiles) #设置可选择多个文件
dir.setDirectory("D:\\")
#设置只显示图片
dir.setNameFilter('图片文件夹(*.jpg *.png *.gif *.ico)')
if dir.exec_():
self.listWidget.addItems(dir.selectedFiles())
if __name__=='__main__':
app=QApplication(sys.argv)
win=demo()
win.show()
sys.exit(app.exec_())
运行效果
Python使用QFileDialog显示打开对话框时,还可以使用getOpenFileName()方法或者getOpenFileNames()方法,其中,getOpenFileName()方法用来获取一个打开文件的文件名,而getOpenFileNames()方法可以获取多个打开文件的文件名。
使用QFileDialog选择文件夹
使用QFileDialog选择文件夹时,需要用到getExistingDirectory()方法,该方法需要指定打开对话框的标题和要打开的默认路径。
import os
import sys
from PyQt5 import QtCore,QtWidgets,QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class demo(QMainWindow):
def __init__(self):
super(demo, self).__init__()
self.setupUi()
def setupUi(self):
self.setObjectName("fileDialog")
self.resize(480,300)
self.setWindowTitle("这是一个文件对话框测试")
#创建打开对话框按钮
self.pushButton=QPushButton(self)
self.pushButton.setObjectName("pushbutton")
self.pushButton.setGeometry(QtCore.QRect(20,10,190,30))
self.pushButton.setText("打开文件对话框")
#增加一个文本框
self.linEdit=QLineEdit(self)
self.linEdit.setGeometry(20,45,440,30)
#创建listwidget 用来显示选择的图片文件夹
self.listWidget=QListWidget(self)
self.listWidget.setGeometry(QtCore.QRect(20,85,440,200))
self.listWidget.setObjectName('listwidget')
#绑定信号
self.pushButton.clicked.connect(self.bindlist)
def bindlist(self): #这里和上边不同
dir=QFileDialog.getExistingDirectory(None,"选择文件夹路径",os.getcwd())
self.linEdit.setText(dir)
list=os.listdir(dir)
self.listWidget.addItems(list)
if __name__=='__main__':
app=QApplication(sys.argv)
win=demo()
win.show()
sys.exit(app.exec_())
3、QInputDialog:输入对话框
QInputDialog类表示一个标准的输入对话框,该对话框由一个文本框(或者数字选择框,或者下拉列表框)和两个按钮(OK按钮和Cancel按钮)组成,它可以与用户进行简单的交互。
QInputDialog类的常用方法 :
getText()方法
text,flag=QInputDialog.getText(QWidget,dlgTitle,txtLabel,echoMode,defaultInput)
getText()方法的参数及返回值说明如表
getItem()方法
text,flag =QInputDialog.getItem(QWidget,dlgTitle,txtLabel,items,curIndex,editable)
getItem()方法的参数及返回值说明
getInt()方法
显示一个用于输入整数的编辑框,显示的是SpinBox控件。
inputValue,flag =QInputDialog.getInt(QWidget,dlgTitle,txtLabel,defaultValue,minValue,maxValue,stepValue)
getDouble()方法
显示一个用于输入浮点数的编辑框,显示的是DoubleSpinBox控件.
inputValue,flag =QInputDialog.getDouble(QWidget,dlgTitle,txtLabel,defaultValue,minValue,maxValue,decimals);
4、字体和颜色对话框
字体对话框、颜色对话框通常用来对文本的字体、颜色进行设置,在PyQt5中,使用QFontDialog类表示字体对话框,而使用QColorDialog类表示颜色对话框。
QFontDialog:字体对话框
QFontDialog类表示字体对话框,用户可以从中选择字体的大小、样式、格式等信息,类似Word中的字体对话框。 QFontDialog类最常用的方法是getFont()方法,用来获取在字体对话框中选择的字体相关的信息.
QFontDialog.getFont()
该方法的返回值包含一个QFont对象和一个标识,其中,QFont对象直接存储字体相关的信息,而标识用来确定是否正常返回,即是否单击了字体对话框中的OK按钮。
QColorDialog:颜色对话框
QColorDialog类最常用的方法是getColor()方法,用来获取在颜色对话框中选择的颜色信息。
QColorDialog.getColor()
#该方法的返回值是一个QColor对象,存储选择的颜色相关的信息。
#选择完颜色后,可以使用QColor对象的isValid()方法判断选择的颜色是否有效。
一个实例:
代码如下:
import os
import sys
from PyQt5 import QtCore,QtWidgets,QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class demo(QMainWindow):
def __init__(self):
super(demo, self).__init__()
self.setupUi()
def setupUi(self):
self.setObjectName("fileDialog")
self.resize(480,300)
self.setWindowTitle("这是一个字体颜色对话框测试")
#创建打开对话框按钮
self.pushButton=QPushButton(self)
self.pushButton.setObjectName("pushbutton")
self.pushButton.setGeometry(QtCore.QRect(20,10,190,30))
self.pushButton.setText("打开字体对话框")
self.pushButton2 = QPushButton(self)
self.pushButton2.setObjectName("pushbutton2")
self.pushButton2.setGeometry(QtCore.QRect(220, 10, 190, 30))
self.pushButton2.setText("打开字体对话框")
#创建textEdit用来显示选择的图片文件夹
self.textEdit=QTextEdit(self)
self.textEdit.setGeometry(QtCore.QRect(20,50,440,240))
self.textEdit.setText('金戈铁马,驱除鞑奴。')
#绑定信号
self.pushButton.clicked.connect(self.setFonts)
self.pushButton2.clicked.connect(self.setColor)
def setFonts(self): #这里和上边不同
font,ok=QFontDialog.getFont()
if ok:
self.textEdit.setFont(font)
def setColor(self):
color=QColorDialog.getColor()
if color.isValid():
self.textEdit.setTextColor(color)
if __name__=='__main__':
app=QApplication(sys.argv)
win=demo()
win.show()
sys.exit(app.exec_())
评论列表
发表评论