PyQt5 QDialog类

  • Post category:Python

下面是Python PyQt5 QDialog类的完整使用攻略。

1. QDialog类的概述

QDialog是PyQt5中的一个重要类,它可以让用户创建具有对话框特征的窗体,常见的对话框包括:提示框、输入框、打开和保存文件对话框等。QDialog继承了QWidget类,因此在创建QDialog对象的时候可以使用QWidget类中所支持的所有方法。

在使用PyQt5创建对话框时可以采用两种方法,一种是继承QDialog类并重写其方法,另一种是直接使用QDialog类的实例析构方法来构造和显示对话框。

2. QDialog类的使用方法

2.1 QDialog类的创建

要创建一个QDialog类的对象,可以使用以下代码:

from PyQt5.QtWidgets import QApplication, QDialog

app = QApplication([])
dialog = QDialog()
dialog.exec_()

这里创建了一个名为dialog的QDialog类的对象,并以其始终执行的方式打开此对话框。

2.2 QDialog类的实例方法

QDialog类支持很多实例方法,包括设置当前QDialog类实例的标题、大小和位置、设置模态和非模态对话框等。下面是QDialog类的一些实例方法及其使用示例。

2.2.1 setTitle

setTitle方法用于设置QDialog实例的标题。示例代码如下:

dialog = QDialog()
dialog.setWindowTitle('提示')

2.2.2 setFixedSize

setFixedSize方法用于设置QDialog实例的大小。示例代码如下:

dialog = QDialog()
dialog.setFixedSize(300, 200)

2.2.3 move

move方法用于设置QDialog实例的位置。示例代码如下:

dialog = QDialog()
dialog.move(100, 100)

其中,第一个参数代表QDialog实例在X轴上的位置,第二个参数代表在Y轴上的位置。

2.2.4 setModal

setModal方法用于设置QDialog实例是否模态,若为True则表示当前对话框为模态对话框,否则为非模态对话框。示例代码如下:

dialog = QDialog()
dialog.setModal(True)

2.3 QDialog类的信号

QDialog类支持很多信号,包括通过setResult方法获取QDialog实例的返回值等。下面是QDialog类的一些常用信号及其使用示例。

2.3.1 setResult

setResult方法用于获取QDialog实例的返回值,该方法一般用于模态对话框中获取用户的操作:示例代码如下:

dialog = QDialog()
dialog.setResult(100)

2.3.2 finished

finished信号在QDialog实例结束时触发,例如用户点击QDialog实例关闭按钮或调用其done方法时触发该信号。示例代码如下:

dialog = QDialog()
dialog.finished.connect(lambda res: print('QDialog返回值为:', res))

在这个示例中,当QDialog类结束时触发finished信号,该信号触发一个槽函数,该函数将输出完整结果。

3. QDialog类的示例

下面是两个用PyQt5创建对话框的示例,以具体展示QDialog类的使用方法。

3.1 文件对话框示例

下面是一个打开文件对话框的示例,其中使用了QFileDialog类和QMessageBox类。

from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog, QMessageBox

app = QApplication([])

class CustomDialog(QDialog):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 显示文件对话框
        filename = QFileDialog.getOpenFileName(self, 'Open file', '/')
        if filename[0]:
            # 如果选择了一个文件,就显示信息框
            QMessageBox.information(self, '文件选择', '您选择的文件为:' + filename[0])


dialog = CustomDialog()
dialog.exec_()

3.2 提示框示例

下面是一个提示框的示例,其中包括了QDialog、QMessageBox和QHBoxLayout控件。

from PyQt5.QtWidgets import QApplication, QDialog, QHBoxLayout, QLabel, QMessageBox

app = QApplication([])

class CustomDialog(QDialog):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建一个水平布局
        hbox = QHBoxLayout(self)

        # 展示提示信息
        label = QLabel('您确定要删除此项吗?', self)
        hbox.addWidget(label)

        # 展示按钮
        buttonBox = QMessageBox(self)
        buttonBox.addButton(QMessageBox.Yes)
        buttonBox.addButton(QMessageBox.No)
        hbox.addWidget(buttonBox)

        # 如果选择了"是"则显示信息框
        if buttonBox.exec_() == QMessageBox.Yes:
            QMessageBox.information(self, '确认删除', '项已经被删除!')


dialog = CustomDialog()
dialog.exec_()

这是一个的删除确认框的示例,当用户选择的是“是”,该对话框将关闭并显示一个主信息框。