如何在 Pharo 中显示进度条?
How can I show a progress bar in Pharo?
我在 Pharo 中有一个 do:
需要很长时间才能处理。我想向用户展示它的进度。 Pharo 是怎么做到的?
这里有两种方法:
Collection
借鉴 UIManager
并支持 do:
的 displayingProgress:
every: milliseconds
变体:
(1 to: 60)
do: [ :e | (Delay forSeconds: 0.5) wait "simulate a delay" ]
displayingProgress: [ :e | 'waiting ' , e asString ] every: 1000
你可以试试这个例子中的 every:
,看看如果你将它设置为小于 1000 毫秒,它会更频繁地更新(将它设置为 100 将显示间隔的每个值)。
此外,您可以简单地使用 displayingProgress: 'Waiting...'
来始终只显示相同的字符串,而不会出现阻塞。
使用Job
class。这是与上述类似的解决方案:
myColl := 1 to: 20.
[ :job |
myColl
do: [ :e |
job
progress: e / myColl size;
title: 'waiting ' , e asString.
(Delay forSeconds: 0.5) wait ] ] asJob run
我在 Pharo 中有一个 do:
需要很长时间才能处理。我想向用户展示它的进度。 Pharo 是怎么做到的?
这里有两种方法:
Collection
借鉴UIManager
并支持do:
的displayingProgress:
every: milliseconds
变体:(1 to: 60) do: [ :e | (Delay forSeconds: 0.5) wait "simulate a delay" ] displayingProgress: [ :e | 'waiting ' , e asString ] every: 1000
你可以试试这个例子中的
every:
,看看如果你将它设置为小于 1000 毫秒,它会更频繁地更新(将它设置为 100 将显示间隔的每个值)。此外,您可以简单地使用
displayingProgress: 'Waiting...'
来始终只显示相同的字符串,而不会出现阻塞。使用
Job
class。这是与上述类似的解决方案:myColl := 1 to: 20. [ :job | myColl do: [ :e | job progress: e / myColl size; title: 'waiting ' , e asString. (Delay forSeconds: 0.5) wait ] ] asJob run