2014-06-18 10 views
1

저는 rumps을 사용하는 작은 파이썬 응용 프로그램에서 작업하고 있으며 상태 표시 줄의 응용 프로그램 제목을 주기적으로 업데이트하고 싶습니다. 내가 찾고있는 것을해야하는 엉덩이에 기능이있는 것처럼 보이지만 작동하지 않는 것 같습니다. 여기에 내가 닥쳐 가고있는 문제를 보여주는 몇 가지 예제 코드의 적용이 있습니다 :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년 6월 18일 10 : 03 : 26.033 파이썬 [29628 : 1107] 'NoneType'객체 호출 아니다

그리고 큰 추적 (제공 할 수있는 형식 일뿐입니다.)

내가 겪고있는 오류는 스레딩과 관련이 있을지 모르지만 나는 무엇을 해야할지를 놓치고 있습니다. 나는 엉덩이에서 벗어나려고했지만 NSStatusBar가 자체적으로 작동하도록 할 수는 없으며 항상 자체 오류가 발생합니다. 나는 정말 단순한 것을하고 싶지만, 제대로 작동하지는 않을 것 같습니다. 이것은 유감입니다.

도움이나 의견을 보내 주시면 감사하겠습니다.

답변

0

코드 적어도 두 가지 문제가 있습니다 : 당신이 통과하지한다 sayhi 슈퍼()에

  1. 통화가 sayhi에서 .title()에 대한 호출에서

  2. 필요하지 않는 "자체"인수

역 추적을 보지 않고도이 둘 중 어느 것이 문제와 관련이 있는지 알 수 없습니다. .

0

문제는 rumps 나 PyObjC에서 발생하지 않습니다. 단지 몇 가지 간단한 Python 오류입니다. 파이썬에서 클래스가 작동하는 방법을 읽을 수 있습니다.

로널드의 두 지점은,

super(AwesomeStatusBarApp, self).title(self, "Hi") 

은 슈퍼 클래스 구현을 호출 할 필요가 없다,

self.title(self, "Hi") 

이 라인에 대한 정확하지만 사이 self을 통과하고 싶지는 않을 때문에이 여전히 잘못 클래스의 메소드 - 자동으로 발생합니다.

self.title("Hi") 
import rumps 

class AwesomeStatusBarApp(rumps.App): 
    def __init__(self): 
     super(AwesomeStatusBarApp, self).__init__("Awesome App") 
     self.menu = ["updating"] 

    @rumps.timer(1) 
    def sayhi(self, _): 
     self.title = "Hi" 

if __name__ == "__main__": 
    AwesomeStatusBarApp().run() 
0

당신은 클래스의 title 속성을 설정하여 응용 프로그램 제목을 업데이트 할 수 있습니다 title는 속성이 너무로 다시 그대로3210 여전히이

self.title = "Hi" 

전체 코드, 잘못된 것입니다.

어떤 방법 으로든 self.title = "New Title" 할 수 있습니다. instance.title = "New Title" 할 수도 있습니다. 즉시 업데이트됩니다.