首页 > 其他分享 >[AHK2-UI] 使用#Include

[AHK2-UI] 使用#Include

时间:2023-08-23 14:22:36浏览次数:39  
标签:脚本 AHK2 ahk flag ui light UI Include

#Include是什么

一句话介绍:可以将一个脚本的代码插入到Include语句的位置。

作用

使用#Include可以实现分模块开发,对于代码组织有十分重要的作用。

通常使用小型脚本(只有些热键和热字串)不需要使用;但当脚本不仅仅是这些,还要写ui界面或更繁杂的功能时,我们最好将ui和数据处理的逻辑分开。

下面是一个分模块的例子:

image

分别是:

  • bin -> 编译后的脚本。
  • cfg -> 配置脚本与配置文件。
  • fs -> 文件读写脚本。
  • handler -> 特定的数据处理。
  • home -> 脚本产生的文件。
  • res -> ui需要的资源。
  • ui -> ui实现脚本。
  • utils -> 使用的工具脚本,如一些数据结构,字符串处理。
  • 启动脚本。

注意:这些并不通用,大部分是专门为脚本而设计的。

使用#Include

以上面的启动脚本PToolLauncher.ahk为例子:

#Requires AutoHotkey v2.0
#SingleInstance Force
#Include ./ui/ui_planE.ahk

PlanEGui.Show({ theme: 'light' })

!0:: Reload
!Space::
{
  static flag := false
  flag ? PlanEGui.Show({ theme : 'light'}) : PlanEGui.Hide()
  flag := !flag
}
!q:: ExitApp()

这个脚本只做些脚本指令配置(如单例启动)和ui脚本引入。

其中便是通过#Include引入ui脚本,然后就像ui脚本出现在这一样,之后就可以调用里面的类和方法等。

使用时的注意点

使用#Include并不会修正资源路径。

为更好的说明,请看下面的例子:

; 假设有这样的目录树
; ui
;  |--a.ahk
; res
;  |--light.png
; b.ahk

; 脚本一 a.ahk
Class MyGui extends Gui {
  __New() {
    this.AddPicture('yp h30 w50', ../res/light.png'))
  }
}

; 脚本二 b.ahk
#Include ./ui/a.ahk
g := MyGui()
g.show()

如果运行b.ahk,则会报错,提示无法读取资源。
这是因为在b脚本中,资源引用的路径是基于b而言的,而这个路径本意是相对a的,所以当然会报错。

解决

如果写过nodeJs的就知道可以使用__dirname和Path.resolve()解决这个问题,所以我们写个类似的方法就行。

这将在后面实现。

标签:脚本,AHK2,ahk,flag,ui,light,UI,Include
From: https://www.cnblogs.com/refiz/p/17651507.html

相关文章

  • Python基础入门学习笔记 074 GUI的终极选择:Tkinter11
    事件绑定对于每个组件来说,可以通过bind()方法将函数或方法绑定到具体的事件上。当被触发的事件满足该组件绑定的事件时,Tkinter就会带着事件描述去调用handler()方法实例1:捕获单击鼠标位置1fromtkinterimport*23root=Tk()45defcallback(event):6prin......
  • Python基础入门学习笔记 075 GUI的终极选择:Tkinter12
    Message组件Message(消息)组件是Label组件的变体,用于显示多行文本信息。Message组件能够自动换行,并调整文本的尺寸使其适应给定得尺寸。实例1:1fromtkinterimport*23root=Tk()4w1=Message(root,text="这是一则消息",width=100)5w1.pack()6w2=Message(root,......
  • Python基础入门学习笔记 071 GUI的终极选择:Tkinter8
    Canvas(画布)组件一个可以让你随心所欲绘制界面的组件。通常用于显示和编辑图形,可以用它来绘制直线、图形、多边形,甚至是绘制其他组件。实例1:1fromtkinterimport*2root=Tk()3#创建canvas对象框,设置其宽度、高度与背景色4w=Canvas(root,width=200,height=100,b......
  • Python基础入门学习笔记 073 GUI的终极选择:Tkinter10
    Munu组件Tkinter提供了一个Menu组件,用于实现顶级菜单、下拉菜单和弹出菜单。实例1:创建一个顶级菜单(或称窗口主菜单)1fromtkinterimport*23defcallback():4print("被调用了")56root=Tk()789menubar=Menu(root)#创建一个顶级菜单10m......
  • iOS 在UILabel显示不同的字体和颜色(转)
    在项目开发中,我们经常会遇到在这样一种情形:在一个UILabel使用不同的颜色或不同的字体来体现字符串,在iOS6以后我们可以很轻松的实现这一点,官方的API为我们提供了UILabel类的attributedText,使用不同颜色和不同字体的字符串,我们可以使用NSAttributedText和NSMutableAttributed......
  • ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
    在ios7中,UITableViewCell左侧会有默认15像素的空白。这时候,设置setSeparatorInset:UIEdgeInsetsZero能将空白去掉。但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero已经不起作用了。下面是解决办法首先在viewDidLoad方法加入以下代码: if([self.tableViewrespondsToSelect......
  • UITextField中文输入法输入时对字符长度的限制 输入时对字符类型的限制
    检索一个字符串的长度的话:直接用length,去进行判断就行了,如果要检索字符串是否是自己要限制的类型的话,可以用正则表达式:举个例子:  匹配9-15个由字母/数字组成的字符串的正则表达式:NSString*regex=@"^[A-Za-z0-9]{9,15}$";NSPredicate*pred=[NSPredicatepredicateWi......
  • Unity UGUI的Image(图片)组件的介绍及使用
    UGUI的Image(图片)组件的介绍及使用1.什么是UGUI的Image(图片)组件?UGUI的Image(图片)组件是Unity引擎中的一种UI组件,用于显示2D图像。它提供了一种简单而灵活的方式来在游戏中加载和显示图片。2.为什么要使用UGUI的Image(图片)组件?使用UGUI的Image组件可以方便地在游戏中展示各种图......
  • Python基础入门学习笔记 070 GUI的终极选择:Tkinter7
    实例1:添加Tags1fromtkinterimport*23root=Tk()4text=Text(root,width=30,height=5)5text.pack()67#INSERT索引表示插入光标当前的位置8text.insert(INSERT,"IloveFishC.com!")#光标当前的位置插入9#注意,行号从1开始,列号则从0开始10text.ta......
  • Python基础入门学习笔记 067 GUI的终极选择:Tkinter4
    实例1:1fromtkinterimport*23root=Tk()#创建主窗口4e=Entry(root)#在主窗口中插入输入框5e.pack(padx=20,pady=20)67e.delete(0,END)#清空输入框8e.insert(0,"默认文本...")#设置输入框内容910mainloop() 实例2:1fromtkinterimp......