私は現在、を使用する必要のある小さなスクリプトに取り組んでいますgtk.StatusIcon()
。どういうわけか、私はそれでいくつかの奇妙な振る舞いをしています。Pythonインタラクティブシェルに入り、次のように入力します。
>> import gtk
>> statusIcon = gtk.status_icon_new_from_file("img/lin_idle.png")
Pygtkは正確に実行する必要があり、システムトレイにアイコン(lin_idle.png)を表示します。
ただし、スクリプトで同じタスクを実行しようとすると、次のようになります。
def gtkInit(self): self.statusIcon = gtk.status_icon_new_from_file( "img / lin_idle.png")
gtkInit()
呼び出されると、代わりに次のように表示されます。
インタラクティブなPythonシェルと同じ作業ディレクトリでスクリプトを実行したので、画像が見つかると確信しているので、困惑しています...誰かアイデアはありますか?前もって感謝します。
更新:何らかの理由gtk.status_icon_new_from_file()
で、スクリプトで数回呼び出した後、最終的にアイコンが作成されますが、残念ながらこの問題は依然として残っています。何がうまくいかないのかについて誰かが何か考えを持っていますか?
要求に応じて:完全なスクリプトは次のとおりです。これは実際には私が作成の初期段階にあるアプリケーションですが、正しくセットアップすれば現時点では機能するので、必要に応じて自由に試してみてください(そして私も助けてください!)、あなたはただimgur開発者キーを取得してそれを入れる必要がありますlinup_control.py
Linup.py
# #Linup-Linuxのドロップボックスの代替品! #Nakedsteve脚本の作品 #MITライセンスの下でリリース # OSのインポート インポート時間 ConfigParserをインポートします linup_controlからインポートLinup cfg = ConfigParser.RawConfigParser() #.linuprcファイルがあるかどうかを確認します home = os.path.expanduser( "〜") os.path.exists(home + "/。linuprc")でない場合: #いや、作ってみよう cfg.add_section( "paths") cfg.set( "paths"、 "watch_path"、home + "/ Desktop / screenshot1.png") #ファイルに書き込みます configfileとしてopen(home + "/。linuprc"、 "wb")を使用: cfg.write(configfile) そうしないと: cfg.read(home + "/。linuprc") linup = Linup() #GUIを作成します(ステータスアイコン、メニューなど) linup.gtkInit() #メインループに入り、アップロードするショットがあるかどうかを確認します #1秒ごと path = cfg.get( "paths"、 "watch_path") 一方1: if(os.path.exists(path)): linup.uploadImage(path) url = linup.getURL() linup.toClipboard(url) linup.json = "" 「スクリーンショットをアップロードしました!」を印刷します os.remove(path) そうしないと: #なぜ私がtime.sleep()を使用しているのか疑問に思っているなら #それがないとCPUが残っていることがわかったからです #linupの実行中は常に50%。あなたがより良い #これを行うための方法、それについて私に連絡してください(私はPythonで比較的新しいです) time.sleep(1)
linup_control.py
gtkをインポートする jsonをインポートする インポート時間 pycurlをインポートする OSのインポート クラスLinup: def __init __(self): self.json = "" def uploadImage(self、path): #ステータスアイコンをビジーに設定 self.statusIcon.set_from_file( "img / lin_busy.png") #新しいpycurlインスタンスを作成します cu = pycurl.Curl() #POST変数を画像と開発キーに設定します vals = [ ("鍵"、"*************")、 ("画像"、(cu.FORM_FILE、パス)) ] #送信先のURLを設定する cu.setopt(cu.URL、 "http://imgur.com/api/upload.json") #これにより、imgurによって返されるjsonを取得できます cu.setopt(cu.WRITEFUNCTION、self.resp_callback) cu.setopt(cu.HTTPPOST、vals) #食べて! cu.perform() cu.close() #ステータスアイコンを完了に設定します... self.statusIcon.set_from_file( "img / lin_done.png") #3秒待つ time.sleep(3) #アイコンをアイドルに設定します self.statusIcon.set_from_file( "img / lin_idle.png") #imgurから応答jsonを取得するために使用されます def resp_callback(self、buff): self.json+=バフ #jsonデータから画像のURLを抽出します def getURL(self): js = json.loads(self.json) return js ['rsp'] ['image'] ['original_image'] #テキスト変数をクリップボードに挿入します def toClipboard(self、text): cb = gtk.Clipboard() cb.set_text(text) cb.store() #LinupのGUI要素を開始します def gtkInit(self): self.statusIcon = gtk.StatusIcon() self.statusIcon.set_from_file( "img / lin_idle.png")