在 AutoHotkey 中使用 GUI 界面时,坐标系统是一个非常关键的概念。AutoHotkey 允许你以 绝对坐标 或 相对坐标 的方式来设计界面。相对坐标写法具有一定的优势,特别是在适应性强的界面时。以下是使用相对坐标写法的优势介绍:
相对坐标的概念
在 AutoHotkey 的 GUI 窗口中,相对坐标 是指控件的位置和尺寸相对于父窗口或其容器的比例,而不是固定的绝对像素值。相对坐标通常使用一个百分比或比例值表示,而不是像素。例如,你可以通过相对于窗口宽度和高度的比例来设定控件的位置和大小。
用相对坐标来写界面,以后修改时能够很方便的插入或者删除调节。不会像绝对坐标那样,牵一发而动全身。
扩展阅读:Gui控件坐标参数图解说明
简易写相对坐标Gui+批量多按钮生成.ahk
#SingleInstance Force
; Gui, Add, Tab3, , 基本|设置
Gui Add, Text, w-2 h-2 section
Gui Add, Text, section, 文件路径: ; section保存此控件位置并定义新一行的控件段
Gui Add, Edit, ys-4 W160, % 显示路径变量 ; 在此控件段中开始一个新列【-4是为了对齐上句文本】
Gui Add, Button, ys-5 g按钮点击跳转, 选择路径
Gui Add, Text, w-2 h-2 xs ; 这句Gui当换行用
Gui Add, Text, section, 延时启动: ; section保存此控件位置并定义新一行的控件段
Gui Add, Edit, ys-4 W60 v开机延时启动变量, % 开机延时启动变量
Gui Add, Text, ys, (秒)
Gui开机启动显示 := 0
Gui Add, Text, ys, % " 开机启动" ; 可以简单点,用空格来做控件间隔处理【需要用强制表达式】
Gui Add, CheckBox, ys Checked%Gui开机启动显示%
Gui Add, Text, w-2 h-2 xs ; 这句Gui当换行用
Gui Add, Text, section, 手机号码: ; section保存此控件位置并定义新一行的控件段
Gui Add, Edit, ys-4 W90 v手机号变量, % 手机号变量
Gui Add, Text, w-2 h-2 xs ; 这句Gui当换行用
Gui Add, Text, w-2 h-2 section ; section保存此控件位置并定义新一行的控件段
Gui Add, Text, w-2 h-2 xs ; 这句Gui当换行用
For k,v in ["上一行","当前行","下一行","暂停","行首停","静音"]
Gui Add, Button, x+5 w50 g按钮点击跳转,%v%
Gui Add, Text, w-2 h-2 xs ; 这句Gui当换行用
For k,v in ["建新行","进一百","进五百","退一百","退五百","设始时"]
Gui Add, Button, x+5 w50 g按钮点击跳转,%v%
; Gui, Tab, 2 ; 下面可以在Tab第二项里写内容【详见帮助文档的Gui "Tab"】
Gui Show, , 简易生成相对坐标界面
; Gui, Show, NoActivate ; NoActivate 让当前活动窗口继续保持活动状态【即生成窗口但不激活】
Return
按钮点击跳转:
GuicontrolGet, 获取按钮名称, , %A_Guicontrol%
Switch 获取按钮名称 {
case "上一行":
MSgBox 指定按钮,可指定功能`n点击:上一行
case "当前行":
MsgBox 多行写法:执行第一行
MsgBox 多行写法:执行第二行
case 获取按钮名称 :
MSgBox % "可用控件名做Send的内容:" 获取按钮名称
}
Return
; 点击Gui右上角关闭按钮,触发ExitApp【退出脚本】
GuiClose:
ExitApp
多热键Gui界面开关控制.ahk
#Persistent
SetBatchLines, -1
Gui,+AlwaysOnTop -MinimizeBox
Gui, font,,Arial
Gui, Add, Text, Section, 勾选后, 按键按下时进行连招
i:=0,x:=0,y:=25
ArrayKey:={1:"1", 2:"214", 3:"3", 4:"4"
,5:"5", 6:"6", 7:"7", 8:"8"
,Z:"ZXCV",X:"XC", C:"C", V:"VR"
,Q:"QWE", E:"ERF", F:"DF",Tab:"{Tab}QR"}
For KeyName, Keys in ArrayKey {
i+=1,i>1?x+=45:"",i>4?(i:=1,x:=0,y+=25):""
开关:=Func("热键").Bind(KeyName,Func("按键").Bind(KeyName,Format("{:L}",Keys),10))
Gui, Add, CheckBox, HwndID vkey_%KeyName% xs+%x% ys+%y%, %KeyName%
GuiControl, +g, %ID%, %开关%
}
Gui, Show
; 逢5换行
Loop 30 {
If (Mod(A_Index, 5) = 1) ; A除以B之后的余数
Gui 2: Add, checkbox, xm, % Format("{:02d}",A_Index)
else
Gui 2: Add, checkbox, x+10, % Format("{:02d}",A_Index)
}
Gui 2: Show
Return
ESC::ExitApp
热键(key,Label){
Gui, Submit, NoHide
Hotkey, $%key%, %Label%, % key_%key%?"ON":"OFF"
}
按键(Key1,key2,ms:=-1){
loop{
Send %key2%
Sleep %ms%
}Until !GetKeyState(key1,"P")
}
GuiEscape:
GuiClose:
ExitApp
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)