0

バックグラウンドで (または理想的には Maya 内で) 実行され、次のことを行う Python スクリプトが必要です。

  1. スクリプトが実行されています
  2. を押すCtrl+Sと、スクリプトがそれを検出します
  3. Returnスクリプトはキーストロークをエミュレートします
  4. スクリプトが実行されています

現在、あちこちでいくつかの回答に従って、CTRL+Sキーストロークを正常に検出できます。この回答に従って WScript.Shell でキーストロークをエミュレートしようとしましたが、失敗しました。

まだ欠けているもの:スクリプトがキーストロークを検出した直後に、Return キーストロークをエミュレートする (つまり、ステップ 3) CTRL+S

私のコード:

Tkinter を tk としてインポート
win32com.client を comclt としてインポート

クラス App(オブジェクト):
    def __init__(自己):
        self.comboKey​​s = False
        self.enterKey = False


    def keyPressed (自己、イベント):
        「--」を印刷

        # Esc が押されたらスクリプトを停止
        if event.keysym == 'エスケープ':
            root.destroy()

        # CTRL+S が押された場合
        elif event.keysym == 's':
            self.comboKey​​s = True


    def keyReleased (自己、イベント):
        event.keysym == 's' の場合:
            self.comboKey​​s = False


    デフォルトタスク (自己):
        self.comboKey​​s の場合:
            print 'CTRL+S キーが押されました!'

        root.after(20,self.タスク)

アプリケーション = アプリ()
ルート = tk.Tk()
print( "矢印キーを押してください (終了するにはエスケープキー):" )

root.bind_all('', application.keyPressed)
root.bind_all('', application.keyReleased)
root.after(20,アプリケーション.タスク)

root.mainloop()

どうもありがとうございました!また、何か情報を見逃していた場合はお知らせください。

4

1 に答える 1

0

TK にコミットしていて、それを実行する必要があるが、Maya と直接やり取りする必要がない場合は、TK アプリケーションで別のプロセスを開始し、maya コマンド ポートを介して、またはrpycのようなライブラリを使用して、TK アプリケーションと対話することができます。またはzeromqを使用して Maya にイベントを送信します。やり取りをシリアル化する必要があるため、面倒です。

アプリ内で何が起こっているかをもっと明確にしていただけると助かります。あなたがやろうとしているのはテキスト入力ですか?

于 2013-08-07T21:10:41.097 に答える