编程语言
首页 > 编程语言> > Python GTK循环ASCII旋转器

Python GTK循环ASCII旋转器

作者:互联网

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

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

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

编辑:两个很好的答案,但是有没有办法用lambda做到这一点?只是因为lambda很酷.而已.

解决方法:

为什么要限制自己使用lambda?做微调器,保持状态最简单:

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)

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

标签:pygtk,python,lambda
来源: https://codeday.me/bug/20191101/1987365.html