- class QProgressDialog#
QProgressDialog 类提供对慢速操作进度的反馈。 更多…
概要#
属性#
autoClose属性
- 是否通过 reset() 隐藏对话框autoReset属性
- 进度对话框是否在 value() 等于 maximum() 时立即调用 reset()labelText属性
- 标签的文本maximum属性
- 进度条表示的最高值minimum属性
- 进度条表示的最低值minimumDuration属性
- 对话框出现前必须经过的时间value
- 当前完成的进度量wasCanceled
- 对话框是否被取消
方法#
def
__init__
def
autoClose
def
autoReset
def
labelText
def
maximum
def
minimum
def
minimumDuration
def
open
def
setAutoClose
def
setAutoReset
def
setBar
def
setCancelButton
def
setLabel
def
value
def
wasCanceled
槽函数#
def
cancel
def
forceShow
def
reset
def
setLabelText
def
setMaximum
def
setMinimum()
def
setRange()
def
setValue()
信号#
def
canceled()
注释
本文档可能包含从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()`的说明。另请参阅
注释
如果使用
from __feature__ import true_property
,则可以直接使用属性,否则通过访问函数。- property autoCloseᅟ: bool#
此属性表示对话框是否会在调用
reset()
时被隐藏。默认值为true。
另请参阅
- property autoResetᅟ: bool#
如果使用这个属性,并且当进度条值等于其最大值时,表示进度对话框将立即调用
reset()
。默认值为true。
另请参阅
- property labelTextᅟ: str#
此属性保存标签的文本。
默认文本为空字符串。
- property maximumᅟ: int#
该属性保存进度条能够表示的最高值。
默认值为100。
另请参阅
- 访问函数
- 属性 minimum: int#
此属性表示进度条的最低值。
默认值为0。
另请参阅
- 访问函数
- 属性 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 – 整数
parent –
QWidget
flags –
WindowType
组合
构造一个进度对话框。
labelText
是提醒用户进度条内容的文本。cancelButtonText
是取消按钮上要显示的文本。如果传入 QString(),则不会显示取消按钮。minimum
和maximum
是此进度对话框所显示的步骤数。例如,如果操作是检查 50 个文件,则最小值将是 0,最大值将是 50。在检查第一个文件之前,调用setValue
(0)。随着每个文件的处理,调用setValue
(1),setValue
(2),等等,最后在检查最后一个文件后调用setValue
(50)。parent
参数是对话框的父部件。将父部件parent
和部件标志f
传递给QDialog()
构造函数。- __init__([parent=None[, flags=Qt.WindowFlags()]])
- 参数:
parent –
QWidget
flags –
WindowType
组合
构造一个进度对话框。
默认设置
标签文本为空。
取消按钮文本为(已翻译)“取消”。
最小值是 0;
最大值是 100
parent
参数是对话框的父部件。将部件标志f
传递给QDialog()
构造函数。- autoClose()#
- 返回类型:
bool
另请参阅
autoClose 属性的获取器。
- autoReset()#
- 返回类型:
bool
另请参阅
autoReset 属性的获取器。
- cancel()#
重置进度对话框。直到进度对话框被重置,
wasCanceled()
变为 true。进度对话框变为隐藏。- canceled()#
在点击取消按钮时发出此信号。默认情况下,它连接到
cancel()
插槽。另请参阅
- forceShow()#
在算法开始后,如果对话框仍然隐藏,并且
minimumDuration
毫秒已过,则显示对话框。另请参阅
- labelText()#
- 返回类型:
str
另请参阅
labelText 属性的获取器。
- maximum()#
- 返回类型:
int
另请参阅
maximum 属性的获取器。
- minimum()#
- 返回类型:
int
另请参阅
minimum 属性的获取器。
- minimumDuration()#
- 返回类型:
int
另请参阅
属性
minimumDuration
的获取器。打开对话框并将其
canceled()
信号连接到由receiver
和member
指定的槽。当对话框关闭时,信号将断开与槽的连接。
- reset()#
重置进度对话框。如果
autoClose()
为真,则进度对话框将变为隐藏。- setAutoClose(close)#
- 参数:
close – 布尔值
另请参阅
属性
autoClose
的设置器。- setAutoReset(reset)#
- 参数:
reset – 布尔值
另请参阅
属性
autoReset
的设置器。- setBar(bar)#
- 参数:
bar –
QProgressBar
将进度条小部件设置为
bar
。进度对话框会调整大小以适应。进度对话框将拥有bar
进度条的所有权,当必要时将其删除,因此不要使用堆栈分配的进度条。- setCancelButton(button)#
- 参数:
按钮 –
QPushButton
将取消按钮设置为对勾按钮,
cancelButton
。进度对话框将拥有此按钮,在必要时将删除它,因此不要传递堆栈上对象的地址,即使用new()创建按钮。如果传递的是None
,则不会显示取消按钮。- setCancelButtonText(text)#
- 参数:
text – str
将取消按钮的文本设置为
cancelButtonText
。如果将文本设置为QString(),则会隐藏并删除取消按钮。另请参阅
将标签设置为
label
。进度对话框将调整大小以适应。标签成为进度对话框的所有者,在必要时将删除它,因此不要传递堆栈上对象的地址。另请参阅
- setLabelText(text)#
- 参数:
text – str
另请参阅
属性
labelText
的设置器。属性
maximum
的设置器。属性
minimum
的设置器。- setMinimumDuration(ms)#
- 参数:
ms – int
另请参阅
属性
minimumDuration
的设置器。- setRange(minimum, maximum)#
- 参数:
minimum – 整数
maximum – 整数
将进度对话框的最小和最大值分别设置为
minimum
和maximum
。如果
最大值
小于最小值
,则最小值
成为唯一合法值。如果当前值超出新的范围,进度的对话框将使用
reset()
重置。另请参阅
minimum
maximum
属性
value
的设置器。- value()#
- 返回类型:
int
另请参阅
属性
value
的获取器。- wasCanceled()#
- 返回类型:
bool
属性
wasCanceled
的获取器。