python gtk循环ascii微调器 [英] python gtk loop ascii spinner

查看:55
本文介绍了python gtk循环ascii微调器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试(用于测试)在gtk.main()循环期间在屏幕上打印一个小的ascii微调器对象.目前,我有这段代码每两秒钟打印一个点.

I am trying (for testing) to have a little ascii spinner object being printed on the screen during a gtk.main() loop. Currently, I have this code which prints a dot every two seconds.

    gobject.timeout_add(2 * 1000,
            lambda : (sys.stdout.write('.'), sys.stdout.flush()) )
    gtk.main()

但是,我希望使用传统的ascii微调器,但是却不能获得很好的lambda.有什么建议吗?

However, I would like the traditional ascii spinner instead but cannot get a good lambda for it. Any suggestions?

编辑:两个不错的答案,但是有办法用lambda做到这一点吗?只是因为lambda很酷.没什么.

Edit: Two good answers but is there a way to do this with a lambda? Just 'cause lambda are cool. Nothing more.

推荐答案

为什么要限制自己使用lambda?做一个微调器,最容易保持状态:

Why are you limiting yourself to a lambda? To do a spinner, it's easiest to maintain state:

class Spinner(object):
  def __init__(self):
    self._chars = r"-\|/-\|/"
    self._pos = 0

  def spin(self):
    sys.stdout.write(self._chars[self._pos])
    sys.stdout.write("\r")
    sys.stdout.flush()
    self._pos += 1
    if self._pos >= len(self._chars):
      self._pos = 0
    return True

spinner = Spinner()
gobject.timeout_add(2 * 1000, spinner.spin)

注意:以上内容未经测试,但应该使总体思路足够清楚.

Note: the above is untested, but should make the general idea clear enough.

这篇关于python gtk循环ascii微调器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆