Pyqt5学习笔记五、PYQT5对话框使用

磊落不羁 by:磊落不羁 分类:pyQt5 时间:3年前 阅读:145 评论:0

五、PYQT之对话框

在PyQt5中,常用的对话框有QMessageBox内置对话框、QFileDialog对话框、QInputDialog对话框、QFontDialog对话框和QColorDialog对话框。

1、QMessageBox:对话框

五种对话框

image-20221223100316539

对话框的使用方法

QMessageBox.information(QWidget, 'Title', 'Content', buttons, defaultbutton)

QWidget:self或者窗口对象,表示该对话框所属的窗口。  

Title:字符串,表示对话框的标题。  

Content:字符串,表示对话框中的提示内容。  

buttons:对话框上要添加的按钮,多个按钮之间用“|”来连接,常见的按钮种类如表13.2所示,该值可选,没有指定该值时,默认为OK按钮。

defaultbutton:默认选中的按钮,该值可选,没有指定该值时,默认为第一个按钮。 表13.2

对话框按钮种类

image-20221223100524721

#QMessageBox.about()关于对话框中不能指定按钮。其语法如下:      
QMessageBox.about(QWidget, 'Title', 'Content')

与对话框进行交互

实际开发时,可能会需要根据对话框的返回值执行相应的操作,PyQt5中的QMessageBox对话框支持获取返回值,例如,修改【实例13.1】中的消息对话框的槽函数,使其弹出一个带有“Yes”和“No”按钮的对话框,然后判断当用户单击“Yes”按钮时,弹出“您同意了本次请求……”的信息提示。

image-20221223100719729

2、QFileDialog:文件对话框

PyQt5中的文件对话框使用QFileDialog类表示,该类继承自QDialog类,它允许用户选择文件或者文件夹,也允许用户遍历文件系统,以便选择一个或多个文件或者文件夹。

image-20221223100805208

使用QFileDialog选择文件

image-20221223103307634

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_())

运行效果

image-20221223103333454

image-20221223103349214

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_())

image-20221223104446184

3、QInputDialog:输入对话框

QInputDialog类表示一个标准的输入对话框,该对话框由一个文本框(或者数字选择框,或者下拉列表框)和两个按钮(OK按钮和Cancel按钮)组成,它可以与用户进行简单的交互。

QInputDialog类的常用方法 :

getText()方法
 text,flag=QInputDialog.getText(QWidget,dlgTitle,txtLabel,echoMode,defaultInput)

getText()方法的参数及返回值说明如表

image-20221223104625083

getItem()方法
text,flag =QInputDialog.getItem(QWidget,dlgTitle,txtLabel,items,curIndex,editable)

getItem()方法的参数及返回值说明

image-20221223104727476

getInt()方法

显示一个用于输入整数的编辑框,显示的是SpinBox控件。

inputValue,flag =QInputDialog.getInt(QWidget,dlgTitle,txtLabel,defaultValue,minValue,maxValue,stepValue)

image-20221223104847809

getDouble()方法

显示一个用于输入浮点数的编辑框,显示的是DoubleSpinBox控件.

inputValue,flag =QInputDialog.getDouble(QWidget,dlgTitle,txtLabel,defaultValue,minValue,maxValue,decimals);

image-20221223104929011

4、字体和颜色对话框

字体对话框、颜色对话框通常用来对文本的字体、颜色进行设置,在PyQt5中,使用QFontDialog类表示字体对话框,而使用QColorDialog类表示颜色对话框。

QFontDialog:字体对话框

QFontDialog类表示字体对话框,用户可以从中选择字体的大小、样式、格式等信息,类似Word中的字体对话框。 QFontDialog类最常用的方法是getFont()方法,用来获取在字体对话框中选择的字体相关的信息.

QFontDialog.getFont()

该方法的返回值包含一个QFont对象和一个标识,其中,QFont对象直接存储字体相关的信息,而标识用来确定是否正常返回,即是否单击了字体对话框中的OK按钮。

QColorDialog:颜色对话框

QColorDialog类最常用的方法是getColor()方法,用来获取在颜色对话框中选择的颜色信息。

QColorDialog.getColor()
#该方法的返回值是一个QColor对象,存储选择的颜色相关的信息。
#选择完颜色后,可以使用QColor对象的isValid()方法判断选择的颜色是否有效。

一个实例:

image-20221223110547172

代码如下:

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_())

screenshots

非特殊说明,本文版权归原作者所有,转载请注明出处

本文地址:http://php.liulei.com.cn/?type=acticle&id=70

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址

TOP