所以我一直在使用rumps开发一个小python应用程序,我想定期更新状态栏中应用程序的标题。在rumps中似乎有一个函数可以实现我所要查找的功能,但我似乎无法使其正常工作,下面是一些示例代码的改编,它显示了我遇到的问题:
import rumps
class AwesomeStatusBarApp(rumps.App):
def __init__(self):
super(AwesomeStatusBarApp, self).__init__("Awesome App")
self.menu = ["updating"]
@rumps.timer(1)
def sayhi(self, _):
super(AwesomeStatusBarApp, self).title(self,"Hi")
if __name__ == "__main__":
AwesomeStatusBarApp().run()
init函数中的super调用工作正常,sayhi函数中的title函数应该完全符合我的要求,更新标题并告诉NSStatusBar更新它,但是我失败了,结果如下:
2014-06-18 10:03:26.033 Python[29628:1107] : 'NoneType' object is not callable
然后是一个大的回溯(我可以提供,它只是格式不好)。在
我认为我遇到的错误可能与线程的运行有关,但是我不知道该怎么做。我试着摆脱rumps,但我不能让NSStatusBar独立工作,它总是抛出自己的错误。我想做一些非常简单的事情,但似乎我永远都无法让它正常工作,这很遗憾。在
任何帮助或建议,谢谢!在
问题不在于rumps或PyObjC——只是一些简单的Python错误。您可能需要阅读Python中的类是如何工作的。在
罗纳德关于这条线的两点是正确的
不需要调用超类实现
^{pr2}$但这仍然是错误的,因为您永远不想在类中的方法之间传递
^{3}$self
,这是自动发生的这仍然是错误的,因为
title
是一个重写为的属性完整代码:
您的代码至少有两个问题:
在
sayhi
中调用super()是不必要的在对
sayhi
中的.title()
的调用中,不应传递“self”参数我不知道这些是否与你的问题有关,没有看到回溯。在
您可以通过设置类的
title
属性来更新应用程序标题。在您可以在类的任何方法中执行
self.title = "New Title"
。 {cd3>你也可以。它会立即更新自己。在相关问题 更多 >
编程相关推荐