Pyqt5系列(四)-基本界面组件之Dialog(1)

在大部分的操作系统中,为了更好的实现人机交互,windows以及linux中均为提供一系列的对话框来完成特定场景下的功能,诸如字体大小选择,字体颜色选择等等。PyQt5中定义了一些列的标准对话框的类,让使用者能够方便和快捷的通过各个类完成字体大小、颜色,以及文件的选择。
PyQt5的场景的对话框有,QFileDialog,QColorDialog,QFontDialog,QErrorMessage,QInputDialog,QMessageBox,QPrintDialog,QProcessDialog等。

QFileDialog

class QFileDialog(QDialog)
 |  QFileDialog(QWidget, Qt.WindowFlags)
 |  QFileDialog(QWidget parent=None, str caption='', str directory='', str filter='')

QFileDialog继承自QDialog。QFileDialog是PyQt中用于文件打开和保存的标准对话框。

通过如下的示例进行说明:

#-*- coding:utf-8 -*-
'''
QFileDialog
'''
__author__ = 'Tony Zhu'

from PyQt5.QtWidgets import QApplication, QDialog,QWidget, QFileDialog, QPushButton, QLineEdit, QGridLayout
import sys
import os


class FileDialog(QDialog):
    def __init__(self):
        super(FileDialog,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("QFileDialog")
        self.setGeometry(400,400,300,260)

        self.fileButton = QPushButton("文件对话框")
        self.fileLineEdit = QLineEdit()
        self.fileButton.clicked.connect(lambda:self.openFile(self.fileLineEdit.text()))

        self.mainLayout = QGridLayout()
        self.mainLayout.addWidget(self.fileButton,0,0)
        self.mainLayout.addWidget(self.fileLineEdit,0,1)

        self.setLayout(self.mainLayout)

    def openFile(self,filePath):
        if os.path.exists(filePath):
            path = QFileDialog.getOpenFileName(self,"Open File Dialog",filePath,"Python files(*.py);;Text files(*.txt)")
        else:
            path = QFileDialog.getOpenFileName(self,"Open File Dialog","/","Python files(*.py);;Text files(*.txt)")

        self.fileLineEdit.setText(str(path[0]))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = FileDialog()
    ex.show()
    sys.exit(app.exec_()) 

运行之后的效果:
这里写图片描述
这里写图片描述
控件说明:

控件类型控件名称作用
QPushButtonfileButton确认打开文件路径
QLineEditfileLineEdit显示打开的文件路径
QFileDialog文件操作对话框类

示例说明:
通过文件对话框来选择所需的文件(默认为当前路径,或者QLineEdit指定的路径),并且将打开的文件路径显示在QLineEdit中。
代码分析:
L21~23:

self.fileButton = QPushButton("文件对话框")
self.= QLineEdit()        self.fileButton.clicked.connect(lambda:self.openFile(self.fileLineEdit.text()))

创建QPushButton和QLineEdit实例,并且绑定fileButton的clicked信号与自定义的槽函数openFile().
由于槽函数openFile()在调用的时候需要传入参数,因此使用lambda将传入参数的openFile()重新定义作为槽函数,即触发clicked事件的时候将调用openFile(self.fileLineEdit.text())) 这个槽函数。

L25~27:

        self.mainLayout = QGridLayout()
        self.mainLayout.addWidget(self.fileButton,0,0)
        self.mainLayout.addWidget(self.fileLineEdit,0,1)

创建网格布局,将定义的fileButton 和fileLineEdit 添加到布局中

L31~37:

    def openFile(self,filePath):
        if os.path.exists(filePath):
            path = QFileDialog.getOpenFileName(self,"Open File Dialog",filePath,"Python files(*.py);;Text files(*.txt)")
        else:
            path = QFileDialog.getOpenFileName(self,"Open File Dialog","/","Python files(*.py);;Text files(*.txt)")

        self.fileLineEdit.setText(str(path[0]))

自定义的槽函数,用来通过QFileDialog来打开对应目录的文件。
os.path.exists()判断输入的字符串是否为一个路径,如果是一个路径则通过,QFileDialog.getOpenFileName()打开对应filePath的目录;负责打开“/”路径的目录,及当前程序执行路径的根目录。
由于QFileDialog类有很多方法均为静态方法,因此在没有实例化对象的情况下,直接通过类名操作静态方法,其中getOpenFileName()就为静态方法。

 |  
 |  getOpenFileName(...)
 |      QFileDialog.getOpenFileName(QWidget parent=None, str caption='', str directory='', str filter='', str initialFilter='', QFileDialog.Options options=0) -> (str, str)

第1个参数parent,用于指定父组件;

第2个参数caption,是QFileDialog对话框的标题;

第3个参数directory,是对话框显示时默认打开的目录,”.” 代表程序运行目录,”/” 代表当前盘符的根目录(Windows,Linux下/就是根目录了),需要注意不同平台下路径的显示方式,比如Windows平台的C盘”C:\”等

第4个参数filter,是对话框中文件后缀名过滤器。比如我们使用”Python files(.py)”就让它只能显示后缀名是.py的文件。如果需要使用多个过滤器,使用”;;”分割,比如”Python files(.py);;Text files(.txt)”,为两个过滤器分别过滤python文件和txt文件;

第5个参数initialFilter,为默认的过滤器;

第6个参数options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是 QFileDialog.Options,每个选项可以使用 | 运算组合起来。


QColorDialog

class QColorDialog(QDialog)
 |  QColorDialog(QWidget parent=None)
 |  QColorDialog(QColor, QWidget parent=None)

QColorDialog依旧继承自QDialog。QColorDialog是PyQt中用于颜色原则的标准对话框。

通过如下的示例进行说明:

#-*- coding:utf-8 -*-
'''
QColorDialog
'''
__author__ = 'Tony Zhu'

from PyQt5.QtWidgets import QApplication, QDialog,QWidget, QColorDialog, QPushButton, QGridLayout, QFrame 
from PyQt5.QtGui import QPalette,QColor
import sys
from PyQt5.QtCore import Qt


class ColorDialog(QDialog):
    def __init__(self):
        super(ColorDialog,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("ColorDialog")
        self.setGeometry(400,400,300,260)

        self.colorButton = QPushButton("颜色对话框")
        self.colorFrame = QFrame()
        self.colorFrame.setFrameShape(QFrame.Box)
        self.colorFrame.setAutoFillBackground(True)
        self.colorButton.clicked.connect(self.openColor)

        self.mainLayout = QGridLayout()
        self.mainLayout.addWidget(self.colorButton,0,0)
        self.mainLayout.addWidget(self.colorFrame,0,1)

        self.setLayout(self.mainLayout)

    def openColor(self):
        color = QColorDialog.getColor(Qt.white,None,"Selectting Color")
        if color.isValid():
            self.colorFrame.setPalette(QPalette(color))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ColorDialog()
    ex.show()
    sys.exit(app.exec_()) 

运行之后的效果:
这里写图片描述
这里写图片描述
控件说明:

控件类型控件名称作用
QPushButtoncolorButton打开颜色对话框
QFramecolorFrame添加调色盘控件,用于显示选择的颜色

示例说明:
通过颜色对话框选择所需要的颜色,并将最终选择的颜色显示在调色盘中。
代码分析:
L22~26:

self.colorButton = QPushButton("颜色对话框")
self.colorFrame = QFrame()
self.colorFrame.setFrameShape(QFrame.Box)
self.colorFrame.setAutoFillBackground(True)
self.colorButton.clicked.connect(self.openColor)

实例化colorButton 和colorFrame 对象,其中绑定colorButton 的clicked信号与自定义的槽函数openColor().
在colorFrame 中通过setPalette()方法添加调色盘,最终将选择的颜色显示在调色盘中。
setFrameShape()设定frame的形状
setAutoFillBackground()设定frame自动填充背景色

L28~30:

self.mainLayout = QGridLayout()        self.mainLayout.addWidget(self.colorButton,0,0)    self.mainLayout.addWidget(self.colorFrame,0,1)

将colorButton和colorFrame添加到网格布局的对应位置

L34~37:

    def openColor(self):
        color = QColorDialog.getColor(Qt.white,None,"Selectting Color")
        if color.isValid():
            self.colorFrame.setPalette(QPalette(color))

自定义选择颜色的方法,QColorDialog.getColor()打开颜色选择对话框,并且将选择的颜色设置到colorFrame的调色盘部件中。
由于QColorDialog类有很多方法均为静态方法,因此在没有实例化对象的情况下,直接通过类名操作静态方法,其中getColor()就为静态方法。

 |  getColor(...)
 |      QColorDialog.getColor(QColor initial=Qt.white, QWidget parent=None, str title=QString(), QColorDialog.ColorDialogOptions options=0) -> QColor
 |  

第1个参数initial,用于指定默认的颜色,函数默认为Qt.white;

第2个参数parent,用于指定父组件;

第3个参数title,是QColorDialog对话框的标题;

第4个参数options,是对话框的一些参数设定,比如是否显示Alpha值等等,每个选项可以使用 | 运算组合起来。具体可以查看API函数的说明。

QColorDialog操作相对简单一些,具体的API的一些使用可以参考一下官网的说明。

PyQt5是一种用于创建图形用户界面(GUI)的Python库。它提供了构建应用程序所需的工具和组件,包括用于创建主界面对话框的类。 主界面是应用程序的初始界面,通常包含菜单栏、工具栏和主要显示区域。我们可以使用PyQt5的QMainWindow类创建主界面。首先,我们需要导入PyQt5库并创建一个QApplication实例,然后实例化QMainWindow类并设置标题和大小。接下来,我们可以添加菜单栏和工具栏,以及其他UI组件如标签、按钮和文本框。最后,我们使用show()方法显示主界面对话框是在主界面上弹出的临时窗口,用于显示特定信息或与用户进行交互。PyQt5提供了几个类用于创建常见的对话框,如输入框、消息框和文件选择框。我们可以使用这些类的实例来创建对话框,设置标题和消息,以及添加按钮和其他UI组件。然后,我们可以使用exec_()方法显示对话框,并根据用户的操作进行响应。 在PyQt5中,主界面对话框都是基于QWidget类的子类。这意味着我们可以使用相同的方法和属性来修改它们的外观和行为。例如,我们可以使用setLayout()方法将布局管理器(如垂直布局或网格布局)应用于主界面对话框,以便更方便地组织和调整UI组件的位置和大小。 总之,pyQt5库提供了创建主界面对话框的类,可以帮助我们快速搭建用户友好的应用程序。通过使用适当的方法和属性,我们可以灵活地定制这些界面,并与用户进行交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值