Python for Maya:检测CTRL + S然后模拟Return键击

时间:2013-08-07 10:41:12

标签: python-2.7 maya keystroke

我需要一个在后台运行的Python脚本(或理想情况下,在Maya中运行)并执行以下操作:

  1. 脚本正在运行
  2. 我按 Ctrl + S ,脚本检测到它
  3. 脚本模拟返回击键
  4. 脚本正在运行
  5. 目前,根据这里和那里的一些答案,我可以成功检测到 CTRL + S 击键。我试过跟this answer to emulate a keystroke with WScript.Shell,但没有成功。

    我还缺少什么:在脚本检测到 CTRL + S 按键后立即模拟返回击键(即步骤3)。

    我的代码:

    import Tkinter as tk
    import win32com.client as comclt
    
    class App(object):
        def __init__(self):
            self.comboKeys = False
            self.enterKey = False
    
    
        def keyPressed(self,event):
            print "--"
    
            # if Esc is pressed, stop script
            if event.keysym == 'Escape':
                root.destroy()
    
            # if CTRL+S is pressed
            elif event.keysym == 's':
                self.comboKeys = True
    
    
        def keyReleased(self,event):
            if event.keysym == 's':
                self.comboKeys = False
    
    
        def task(self):
            if self.comboKeys:
                print 'CTRL+S key pressed!'
    
            root.after(20,self.task)
    
    application = App()
    root = tk.Tk()
    print( "Press arrow key (Escape key to exit):" )
    
    root.bind_all('', application.keyPressed)
    root.bind_all('', application.keyReleased)
    root.after(20,application.task)
    
    root.mainloop()
    

    非常感谢!如果我遗漏了任何信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果您已经提交TK并且您需要运行它而不是直接与Maya交互,您可以使用TK应用程序启动一个单独的进程并通过maya命令端口与其通信,或者使用像rpyczeromq这样的库可以向Maya发送事件。这很痛苦,因为你必须来回串行化通信。

如果您对应用程序内部的内容更加清楚,这可能会对我们有所帮助。是你试图做的文字输入吗?