2024-05-20 19:36:05 发布
网友
我在MacOSX上使用强大的sublimetext3编辑器来运行python代码。我想显示for循环的进度条和以下命令:
sys.stdout.write('\rProgress : %03.2f %%' % (100*float(i)/(N))) sys.flush()
不按预期清除输出窗口中以前打印的行(\r),但生成N行:
\r
N
这不是很好阅读-我的结论是输出窗口可能是只读的。在
有没有人建议改进崇高文本中进度条的使用?在
可以使用以下方法创建可视进度条:
sublime.set_timeout
sublime.set_timeout_async
在
(通过在命令面板中输入Progress Bar Demo@运行插件)
Progress Bar Demo
在 在
有一个css file控制mdpopups的样式。 由于某些原因,color属性没有任何效果。在
mdpopups
color
另外,mdpopups.show_popup的location参数采用-1将弹出窗口设置在插入符号位置。 否则,我不确定location如何影响弹出窗口,因为它只接受一个整数值。在
mdpopups.show_popup
location
-1
我在下面的线索中询问了这些问题:
看看sublime.py我们会发现flush方法实际上什么都不做:
sublime.py
flush
class _LogWriter: def flush(self): pass def write(self, s): sublime_api.log_message(s) sys.stdout = _LogWriter() sys.stderr = _LogWriter()
不过,无论如何,我不建议将控制台用于用户输出。通常使用状态/输出面板。在
状态消息更易于使用,但功能较弱。sergioFC在his answer中演示了这一点。在
这演示了如何使用输出面板。它非常灵活,但必须编写自己的文本命令才能插入文本。这是必需的,因为您需要编辑对象来更改视图的内容。在
输出:
作为另一种解决方案,您可以使用状态栏。设置状态栏消息时,前一个文本将被清除。包控制在安装包时也使用状态栏。在
示例:
import sublime, sublime_plugin import time class ExampleCommand(sublime_plugin.WindowCommand): def run(self, args): sublime.set_timeout_async(self.test,1) def test(self): i=80 while i <= 100: sublime.status_message('%03.2f %%' % i) time.sleep(0.15) i+=0.25 sublime.status_message('100% Stackoverflow!')
可以使用以下方法创建可视进度条:
sublime.set_timeout
或sublime.set_timeout_async
(参见:Sublime Module)在
演示:
在
代码:
@ GitHub
(通过在命令面板中输入
Progress Bar Demo
@运行插件)在 在
注意事项:
有一个css file控制
mdpopups
的样式。 由于某些原因,color
属性没有任何效果。在另外,
mdpopups.show_popup
的location
参数采用-1
将弹出窗口设置在插入符号位置。 否则,我不确定location
如何影响弹出窗口,因为它只接受一个整数值。在在
我在下面的线索中询问了这些问题:
[Proof Of Concept] Visual Progress Bar
在
看看
sublime.py
我们会发现flush
方法实际上什么都不做:不过,无论如何,我不建议将控制台用于用户输出。通常使用状态/输出面板。在
状态消息更易于使用,但功能较弱。sergioFC在his answer中演示了这一点。在
这演示了如何使用输出面板。它非常灵活,但必须编写自己的文本命令才能插入文本。这是必需的,因为您需要编辑对象来更改视图的内容。在
^{pr2}$输出:
作为另一种解决方案,您可以使用状态栏。设置状态栏消息时,前一个文本将被清除。包控制在安装包时也使用状态栏。在
示例:
相关问题 更多 >
编程相关推荐