script¶
该模块是对 HotkeyNet 脚本中的代码块 (我们这里叫 Block) 的抽象. 从而提供了 “在 Python 中写 HotkeyNet” 脚本的能力.
- class hotkeynet.script.Context[source]¶
一个全局单例的上下文对象. 自动管理 HotkeyNet 代码块的从属关系.
在该项目的早期版本中, 我们是用 类属性 来定义从属关系的. 如果代码块 SendLabel 属于 代码块 Hotkey, 那么我们就要用下面这样的语法来写, 非常的繁琐:
Hotkey( blocks = [ SendLabel( to=["w1", "w2"], blocks = [ Key("1"), ] ), SendLabel( to=["w3", "w4"], blocks = [ Key("2"), ] ), ] )
有了上下文机制, 我们可以用 Python 中的上下文管理器
with
语法来表达同样的逻辑, 减少了缩进, 对人类读代码更加友好, 并且整体代码量也大幅减少:with Hotkey(...): with SendLabel(to=["w1", "w2"]): Key("1") with SendLabel(to=["w3", "w4"]): Key("2")
具体实现的原理如下
所有的 HotkeyNet 的代码块都是
Block
的子类, 它们都有一个blocks
属性. 每当我们用- Parameters
stack – 储存当前的堆栈, 是一个后进先出的数据结构
auto_id_index – 用于自动给每个 Block 加 ID 的数据结构. 每一类 Block 例如 Command, Hotkey, SendLabel 都是从 1, 2, 3, … 开始自动加序号.
- property current: hotkeynet.script.Block¶
获取当前上下文中的最外层的 Block.
- class hotkeynet.script.Block(id: str = NOTHING, blocks: List[Block] = NOTHING)[source]¶
所有 HotkeyNet 代码块的基类.
- Parameters
id – 全局唯一的代码块 ID.
blocks – 子 Block 的列表, 类似于 Tree 数据结构的叶子结点.
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- is_null() bool [source]¶
用于判断该代码块是否为空. 对于不同的代码块, 有不同的判空逻辑. 简单来说, 如果一个代码块 是空的, 没有内容, 那么它就属于冗余, 不应该在 HotkeyNet 脚本中存在. 而之所以会产生 空代码块是因为比如你写一些按下快捷键的 Action 的时候, 会触发几个按键, 但有的时候你 不想触发它们, 但你又不得不在代码中定义它, 这时候就可以用 is_null() 做条件判断, 自动 删除冗余的按键. 例如:
- render(verbose=False) str [source]¶
将 Python 对象渲染成 HotkeyNet 中的代码块. 本实现对于大多数的 Block 都使用,
下面是对其不适用的 Block 的列表:
Script.render()
: 因为它是整个脚本, 并不是 HotkeyNet 语法中的代码块.
- class hotkeynet.script.Script(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING)[source]¶
代表着整个 HotkeyNet 脚本.
- class hotkeynet.script.Label(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None, window: Optional[str] = None, ip: str = 'local', send_mode: str = 'SendWinM')[source]¶
用来给软件窗口加别名, 以便在 Command 获 Hotkey 中调用.
Example:
<Label name ip send_mode window>
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.Command(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None)[source]¶
代表着一个命令. 在 HotkeyNet 中相当于编程语言中的函数的概念.
Example:
<Command name> ...
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- call(args: Optional[List[str]] = None) hotkeynet.script.CallCommand [source]¶
调用这个方法, 生成一个
CallCommand
对象. 也就是在 HotkeyNet 中 调用 Command 的代码块.
- class hotkeynet.script.CallCommand(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, cmd: Optional[Union[str, hotkeynet.script.Command]] = None, args: List[str] = NOTHING)[source]¶
代表着在 HotkeyNet 中调用 Command 的代码块.
Example:
<cmd_name arg1 arg2 ...>
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendPC(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, ip: Optional[str] = 'local')[source]¶
将命令获 Hotkey 发送到本机或是网络上的另一台电脑上.
Example:
<SendPC ip> ...
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.Run(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, path: Optional[str] = None)[source]¶
运行一个 Windows 程序.
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.Hotkey(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, key: Optional[str] = None)[source]¶
代表着一个快捷键的具体效果. 也是 HotkeyNet 中最关键, 最常用的代码块.
Example:
<Hotkey 1> ...
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- property ref: str¶
用于在其他地方引用这个快捷键的名字. 通常是被
SetButtonHotkey
所引用.
- class hotkeynet.script.MovementHotkey(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, key: Optional[str] = None)[source]¶
代表着一个用于保持按下状态的快捷键的具体效果. 常用于游戏中的人物移动.
Example:
<MovementHotkey Up> ...
Reference:
- class hotkeynet.script.Key(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, key: Optional[str] = None)[source]¶
代表单个键盘按键的效果.
Example:
<Key 1>
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.KeyUp(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, key: Optional[str] = None)[source]¶
代表松开键盘按键的效果. 常用于模拟组合按键, 例如 Ctrl + C.
Example:
<KeyDown Ctrl> <Key C> <KeyUp Ctrl>
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.KeyDown(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, key: Optional[str] = None)[source]¶
代表按下键盘按键的效果. 常用于模拟组合按键, 例如 Ctrl + C.
Example:
<KeyDown Ctrl> <Key C> <KeyUp Ctrl>
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendLabel(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None, to: List[str] = NOTHING)[source]¶
将一堆按键发送到指定的窗口.
Example:
<SendLabel w1> ...
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.ClickMouse(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, button: Optional[str] = None, stroke: str = '', target: str = '', mode: str = '', restore: str = '')[source]¶
Click Mouse.
Example:
<ClickMouse button stroke target mode restore>
Reference:
- property title¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.MoveMouse(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, x: Optional[int] = None, y: Optional[int] = None, target: Optional[str] = None)[source]¶
将鼠标移动到窗口中的指定位置.
Example:
<MoveMouse x y>
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.RenameWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, old: Optional[str] = None, new: Optional[str] = None)[source]¶
重名窗口.
Example:
<RenameWin old new>
Reference:
- class hotkeynet.script.TargetWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None)[source]¶
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.Wait(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, milli: Optional[int] = None)[source]¶
Example:
<wait milliseconds>
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.WaitForWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None, timeout: Optional[int] = None)[source]¶
等待一个窗口被完全打开.
Example:
<WaitForWin window timeout>
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.WaitForWinEnabled(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, timeout: Optional[int] = None)[source]¶
等待当前窗口被完全打开.
Example:
<WaitForWinEnabled timeout>
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SetForegroundWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING)[source]¶
Reference:
- class hotkeynet.script.SetActiveWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING)[source]¶
Reference:
- class hotkeynet.script.Toggle(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING)[source]¶
用 Round robin 的方式, 让你在按下同一个 Hotkey 的时候, 自动改变行为.
Example:
<Hotkey F1> <Toggle> <Key 1> <Toggle> <Key 2> <Toggle> <Key 3>
Reference:
- class hotkeynet.script.ToggleHotkeys(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING)[source]¶
Reference:
- class hotkeynet.script.ToggleWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, windows: List[str] = NOTHING)[source]¶
用 Round robin 的方式, 让你在按下同一个 Hotkey 的时候, 自动切换到队列中的下一个窗口.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None)[source]¶
将按键动作发送到指定窗口. 它会自动将该窗口设为当前活动窗口.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendWinM(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None)[source]¶
将按键动作发送到指定后台窗口. 该窗口可以是后台窗口.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendWinMF(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None)[source]¶
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendWinS(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None)[source]¶
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendWinSF(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, window: Optional[str] = None)[source]¶
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SendFocusWin(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING)[source]¶
将按键动作发送到当前活动窗口.
Reference:
- class hotkeynet.script.SetWinPos(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, x: Optional[int] = None, y: Optional[int] = None)[source]¶
设置窗口在桌面的位置..
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SetWinSize(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, x: Optional[int] = None, y: Optional[int] = None)[source]¶
设置窗口大小.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SetWinRect(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, x: Optional[int] = None, y: Optional[int] = None, width: Optional[int] = None, height: Optional[int] = None)[source]¶
设置窗口的位置以及大小.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.Text(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, text: Optional[str] = None)[source]¶
用键盘输入文本.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.CreatePanel(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None, x: Optional[int] = None, y: Optional[int] = None, width: Optional[int] = None, height: Optional[int] = None)[source]¶
创建一个 Panel 按钮面板 widget.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.CreateButton(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None, x: Optional[int] = None, y: Optional[int] = None, width: Optional[int] = None, height: Optional[int] = None, text: Optional[str] = None)[source]¶
创建 Panel 按钮面板上的按钮.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.CreatePictureButton(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None, x: Optional[int] = None, y: Optional[int] = None, file: Optional[str] = None, text: Optional[str] = None)[source]¶
创建 Panel 按钮面板上的带图标的按钮.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.CreateColoredButton(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, name: Optional[str] = None, x: Optional[int] = None, y: Optional[int] = None, width: Optional[int] = None, height: Optional[int] = None, bkcolor: Optional[str] = None, textcolor: Optional[str] = None, text: Optional[str] = None)[source]¶
创建 Panel 按钮面板上的色块的按钮.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.AddButtonToPanel(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, button: Optional[str] = None, panel: Optional[str] = None, x: Optional[int] = 0, y: Optional[int] = 0, width: Optional[int] = None, height: Optional[int] = None)[source]¶
将按钮添加到 Panel 按钮面板中.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SetButtonHotkey(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, button: Optional[str] = None, hotkey: Optional[hotkeynet.script.Hotkey] = None)[source]¶
将按钮和
Hotkey
绑定.Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.SetButtonCommand(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, button: Optional[str] = None, command: Optional[hotkeynet.script.Command] = None, args: Optional[tuple] = None)[source]¶
将按钮和
Command
绑定.Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.
- class hotkeynet.script.AlwaysOnTop(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, on: bool = True)[source]¶
将当前窗口设为桌面最上端的窗口
Reference:
- class hotkeynet.script.SetPanelLayout(id: str = NOTHING, blocks: List[hotkeynet.script.Block] = NOTHING, panel: Optional[str] = None, row_length: Optional[int] = None, margin: Optional[int] = None, button_width: Optional[int] = None, button_height: Optional[int] = None)[source]¶
设置 Panel 按钮面板的布局.
Reference:
- property title: str¶
HotkeyNet 代码块是类似与 HTML tag 的标签, 只不过它不会 close. Title 就是每个代码块 的第一行标签. 例如
<Hotkey ...>
.