提问人:Neelfinity 提问时间:11/3/2023 更新时间:11/4/2023 访问量:46
AHK 变量文件夹路径取决于单选按钮的选择
AHK variable folder path dependent on radio button choice
问:
日安
我正在尝试为 AutoHotKey (AHK) 创建脚本。脚本本身已经运行良好:一个小的 GUI,每种颜色(黑色或白色)都有两个单选按钮,但我希望有一个单一的功能,而不是像现在这样为每种颜色使用 gosub,因为我希望将来添加更多颜色。
下面是 GUI:
脚本如下:
Gui, Main:new
Gui, Add, GroupBox, x10 y6 w150 h100 R3, Color:
Gui, Add, Radio, Checked vColor1 xp+10 yp+20, Black
Gui, Add, Radio, vColor2, White
Gui, Add, Button, gEnter xp-11 yp+42, Enter
Gui, Show
return
Enter:
Gui, Submit, NoHide
Switch {
Case Color1:
gosub ColorBlack
Case Color2:
gosub ColorWhite
}
Gui, Hide
return
GuiClose:
ExitApp
ColorBlack:
Gui, ColorBlack: Add, Picture,, %A_ScriptDir%\color-black.png
Gui, ColorBlack: Show
return
ColorWhite:
Gui, ColorWhite: Add, Picture,, %A_ScriptDir%\color-white.png
Gui, ColorWhite: Show
return
这也是为什么我需要保持现在的这种结构。因此,为了只有一个函数(只有 Color 而不是 ColorBlack 和 ColorWhite),我需要引用单选按钮选择的路径的特定部分(以便它将颜色名称放在正确的位置):
Color:
Gui, ColorBlack: Add, Picture, x0 y0 w1920 h1920, %A_ScriptDir%\color-%color%.png
Gui, ColorBlack: Show
return
上面的一个当然是行不通的——有人知道如何解决这个问题吗?
答:
1赞
Dieisson Silva dos Santos
11/4/2023
#1
Gui, Main:new
Gui, Add, GroupBox, x10 y6 w150 h100 R3, Color:
Gui, Add, Radio, Checked vColor xp+10 yp+20 , Black ; 1 - you may use just one var for a radio button group, it'll be indexed
Gui, Add, Radio, , White ; 2
Gui, Add, Radio, , Yellow ; 3 and so on
Gui, Add, Button, gEnter xp-11 yp+42, Enter
Gui, Show
return
; Enter:
; Gui, Submit, NoHide
; Switch {
; Case Color1: ; just so you know, you dont need to use gosub with switch/case, you may just nest it under each case, but this would'nt be the best choice in this situtation
; Gui, ColorBlack: Add, Picture,, %A_ScriptDir%\color-black.png
; Gui, ColorBlack: Show
; Case Color2:
; Gui, ColorWhite: Add, Picture,, %A_ScriptDir%\color-white.png
; Gui, ColorWhite: Show
; }
; Gui, Hide
; return
GuiClose:
ExitApp
Enter:
Gui, Submit
selected_color := color = 1 ; ternary operator to determine which color is selected | if ? then : else
? "black"
: color = 2
? "white"
: "yellow"
Gui, Color:Add, Picture,,% A_ScriptDir "\color-" selected_color ".png"
Gui, Color:Show
return
ColorGuiClose: ; destroy the color gui and show the main gui
Gui, Color:Destroy
Gui, Main:Show
Return
评论