0

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

  1. 脚本正在运行
  2. 我按下Ctrl+S,脚本检测到它
  3. 脚本模拟Return击键
  4. 脚本正在运行

目前,在这里和那里遵循一些答案,我可以成功检测到CTRL+S击键。我尝试按照这个答案来模拟 WScript.Shell 的击键,但没有成功。

我仍然缺少什么:在脚本检测到击键之后立即模拟 Return 击键(即第 3 步)CTRL+S

我的代码:

将 Tkinter 导入为 tk
将 win32com.client 导入为 comclt

类应用程序(对象):
    def __init__(self):
        self.comboKey​​s = False
        self.enterKey = False


    def keyPressed(自我,事件):
        打印 ” - ”

        # 如果 Esc 被按下,则停止脚本
        如果 event.keysym == 'Escape':
            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.task)

应用程序 = 应用程序()
根 = tk.Tk()
print("按方向键(退出键退出):")

root.bind_all('', application.keyPressed)
root.bind_all('', application.keyReleased)
root.after(20,application.task)

root.mainloop()

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

4

1 回答 1

0

如果您致力于 TK 并且您需要运行它但不直接与 Maya 交互,您可以使用您的 TK 应用程序启动一个单独的进程,并通过 maya 命令端口或使用像rpyc这样的库与之对话或zeromq将事件发送到 Maya。这很痛苦,因为您必须来回序列化通信。

如果您更清楚应用程序内部发生的事情,这可能会对我们有所帮助。您正在尝试输入文本吗?

于 2013-08-07T21:10:41.097 回答