class QProgressDialog#

QProgressDialog 类提供对慢速操作进度的反馈。 更多

Inheritance diagram of PySide6.QtWidgets.QProgressDialog

概要#

属性#

方法#

槽函数#

信号#

注释

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您在翻译中发现问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式告知我们。

详细描述#

注意

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

进度对话框用于向用户提示操作将花费多长时间,并演示应用程序没有冻结。它还可以让用户有机会取消操作。

进度对话框的一个常见问题是难以知道何时使用它们;在不同硬件上操作所需的时间不同。QProgressDialog为此问题提供了一个解决方案:它根据步骤时间估计操作所需时间,并且只有当估计时间超过minimumDuration()(默认为4秒)时才显示自己。

使用setMinimum()setMaximum() 或者构造函数设置操作中的“步骤”数量,然后随着操作进度调用 setValue()。步骤数量可以任意选择。它可以是不变的文件数量,收到的字节数量,算法主循环迭代的次数,或其他合适的单位。进度从setMinimum() 设置的值开始,当您使用setMaximum() 设置的值作为参数调用setValue() 时,进度对话框会显示操作已完成。

操作结束时,对话框会自动重置并隐藏自己。使用 setAutoReset()setAutoClose() 可以更改这种行为。请注意,如果您设置了与当前 value() 相等的新最大值(使用 setMaximum()setRange() ),对话框也无论如何都不会关闭。

使用 QProgressDialog 有两种方式:模态和无模态。

与无模态的 QProgressDialog 相比,模态的 QProgressDialog 对于程序员来说更易于使用。在循环中进行操作,在适当的时间调用 setValue(),并使用 wasCanceled() 检查是否取消。例如

progress = QProgressDialog("Copying files...", "Abort Copy", 0, numFiles, self)
progress.setWindowModality(Qt.WindowModal)
for i in range(0, numFiles):
    progress.setValue(i)
    if progress.wasCanceled():
        break
    #... copy one file

progress.setValue(numFiles)

无模态进度对话框适用于在后台进行的操作,用户能够与应用程序进行交互。此类操作通常是基于 QTimer(或 QObject::timerEvent())或 QSocketNotifier;或者在单独的线程中执行。在主窗口的状态栏中,一个 QProgressBar 有时可以作为无模态进度对话框的替代品。

您需要一个正在运行的事件循环,将 canceled() 信号连接到停止操作的槽,并在适当的时间调用 setValue()。例如

# Operation constructor
def __init__(self, parent):
    super().__init__(parent)
    self.steps = 0

    pd = QProgressDialog("Operation in progress.", "Cancel", 0, 100)
    pd.canceled.connect(self.cancel)
    t = QTimer(self)
    t.timeout.connect(self.perform)
    t.start(0)

def perform(self):

    pd.setValue(steps)
    #... perform one percent of the operation
    steps = steps + 1
    if steps > pd.maximum():
        t.stop()

def cancel(self):

    t.stop()
    #... cleanup

在两种模式下,都可以通过使用setLabel()setBar()setCancelButton()替换子控件来自定义进度对话框,具体请参阅《setLabel()`《setBar()`《setCancelButton()`的说明。

../../_images/fusion-progressdialog.png

另请参阅

QDialog QProgressBar

注释

如果使用from __feature__ import true_property,则可以直接使用属性,否则通过访问函数。

property autoCloseᅟ: bool#

此属性表示对话框是否会在调用reset()时被隐藏。

默认值为true。

另请参阅

setAutoReset()

访问函数
property autoResetᅟ: bool#

如果使用这个属性,并且当进度条值等于其最大值时,表示进度对话框将立即调用reset()

默认值为true。

另请参阅

setAutoClose()

访问函数
property labelTextᅟ: str#

此属性保存标签的文本。

默认文本为空字符串。

访问函数
property maximumᅟ: int#

该属性保存进度条能够表示的最高值。

默认值为100。

另请参阅

minimum setRange()

访问函数
属性 minimum: int#

此属性表示进度条的最低值。

默认值为0。

另请参阅

maximum setRange()

访问函数
属性 minimumDuration: int#

此属性存储对话框出现之前必须经过的时间。

如果任务的预期持续时间小于minimumDuration,对话框将不会出现。这可以防止对话框弹出显示快速完成的任务。对于预期将超过minimumDuration的任务,对话框会在minimumDuration时间后弹出,或者在设置任何进度后立即弹出。

如果设置为0,则一旦设置任何进度,对话框就总是显示。默认为4000毫秒。

访问函数
属性 value: int#

此属性表示当前的进度量。

要使进度对话框按预期工作,您应将此属性最初设置为minimum,最后设置为maximum;您可以在之间调用setValue()任意次。

注意

如果进度对话框是模态的(参见QProgressDialog),则setValue()调用QCoreApplication::processEvents(),因此请务必注意这不会导致您的代码发生不希望的重入。例如,不要在paintEvent中使用QProgressDialog !

另请参阅

minimum maximum

访问函数
属性 wasCanceled: bool#

此属性表示对话框是否被取消。

访问函数
__init__(labelText, cancelButtonText, minimum, maximum[, parent=None[, flags=Qt.WindowFlags()]])#
参数:
  • labelText – 字符串

  • cancelButtonText – 字符串

  • minimum – 整数

  • maximum – 整数

  • parentQWidget

  • flagsWindowType 组合

构造一个进度对话框。

labelText 是提醒用户进度条内容的文本。

cancelButtonText 是取消按钮上要显示的文本。如果传入 QString(),则不会显示取消按钮。

minimummaximum 是此进度对话框所显示的步骤数。例如,如果操作是检查 50 个文件,则最小值将是 0,最大值将是 50。在检查第一个文件之前,调用 setValue (0)。随着每个文件的处理,调用 setValue (1),setValue (2),等等,最后在检查最后一个文件后调用 setValue (50)。

parent 参数是对话框的父部件。将父部件 parent 和部件标志 f 传递给 QDialog() 构造函数。

__init__([parent=None[, flags=Qt.WindowFlags()]])
参数:

构造一个进度对话框。

默认设置

  • 标签文本为空。

  • 取消按钮文本为(已翻译)“取消”。

  • 最小值是 0;

  • 最大值是 100

parent 参数是对话框的父部件。将部件标志 f 传递给 QDialog() 构造函数。

autoClose()#
返回类型:

bool

另请参阅

setAutoClose()

autoClose 属性的获取器。

autoReset()#
返回类型:

bool

另请参阅

setAutoReset()

autoReset 属性的获取器。

cancel()#

重置进度对话框。直到进度对话框被重置,wasCanceled() 变为 true。进度对话框变为隐藏。

canceled()#

在点击取消按钮时发出此信号。默认情况下,它连接到 cancel() 插槽。

另请参阅

wasCanceled()

forceShow()#

在算法开始后,如果对话框仍然隐藏,并且minimumDuration 毫秒已过,则显示对话框。

另请参阅

setMinimumDuration()

labelText()#
返回类型:

str

另请参阅

setLabelText()

labelText 属性的获取器。

maximum()#
返回类型:

int

另请参阅

setMaximum()

maximum 属性的获取器。

minimum()#
返回类型:

int

另请参阅

setMinimum()

minimum 属性的获取器。

minimumDuration()#
返回类型:

int

另请参阅

setMinimumDuration()

属性 minimumDuration 的获取器。

open(receiver, member)#
参数:
  • receiverQObject

  • member – 字符串

打开对话框并将其 canceled() 信号连接到由 receivermember 指定的槽。

当对话框关闭时,信号将断开与槽的连接。

reset()#

重置进度对话框。如果 autoClose() 为真,则进度对话框将变为隐藏。

setAutoClose(close)#
参数:

close – 布尔值

另请参阅

autoClose()

属性 autoClose 的设置器。

setAutoReset(reset)#
参数:

reset – 布尔值

另请参阅

autoReset()

属性 autoReset 的设置器。

setBar(bar)#
参数:

barQProgressBar

将进度条小部件设置为 bar。进度对话框会调整大小以适应。进度对话框将拥有 bar 进度条的所有权,当必要时将其删除,因此不要使用堆栈分配的进度条。

setCancelButton(button)#
参数:

按钮QPushButton

将取消按钮设置为对勾按钮,cancelButton。进度对话框将拥有此按钮,在必要时将删除它,因此不要传递堆栈上对象的地址,即使用new()创建按钮。如果传递的是None,则不会显示取消按钮。

另请参阅

setCancelButtonText()

setCancelButtonText(text)#
参数:

text – str

将取消按钮的文本设置为cancelButtonText。如果将文本设置为QString(),则会隐藏并删除取消按钮。

另请参阅

setCancelButton()

setLabel(label)#
参数:

labelQLabel

将标签设置为label。进度对话框将调整大小以适应。标签成为进度对话框的所有者,在必要时将删除它,因此不要传递堆栈上对象的地址。

另请参阅

setLabelText()

setLabelText(text)#
参数:

text – str

另请参阅

labelText()

属性 labelText 的设置器。

setMaximum(maximum)#
参数:

maximum – 整数

另请参阅

maximum()

属性 maximum 的设置器。

setMinimum(minimum)#
参数:

minimum – 整数

另请参阅

minimum()

属性 minimum 的设置器。

setMinimumDuration(ms)#
参数:

ms – int

另请参阅

minimumDuration()

属性 minimumDuration 的设置器。

setRange(minimum, maximum)#
参数:
  • minimum – 整数

  • maximum – 整数

将进度对话框的最小和最大值分别设置为minimummaximum

如果 最大值 小于 最小值,则 最小值 成为唯一合法值。

如果当前值超出新的范围,进度的对话框将使用 reset() 重置。

另请参阅

minimum maximum

setValue(progress)#
参数:

progress – int

另请参阅

value()

属性 value 的设置器。

value()#
返回类型:

int

另请参阅

setValue()

属性 value 的获取器。

wasCanceled()#
返回类型:

bool

属性 wasCanceled 的获取器。