AHK 变量文件夹路径取决于单选按钮选择

问题描述 投票:0回答:1

美好的一天,

我正在尝试为 AutoHotKey (AHK) 创建脚本。脚本本身已经工作得很好:一个小型 GUI,每种颜色(黑色或白色)都有两个单选按钮,但我想要一个函数,而不是像现在这样为每种颜色提供一个 gosub,因为我想要未来会添加更多颜色。

这是图形用户界面:

这是脚本:

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 而不是 ColorBlackColorWhite),我需要引用单选按钮选择路径的特定部分(以便将颜色名称放入正确的位置):

Color:
    Gui, ColorBlack: Add, Picture, x0 y0 w1920 h1920, %A_ScriptDir%\color-%color%.png
    Gui, ColorBlack: Show
return

上面的方法当然行不通——有人知道如何解决这个问题吗?

path radio-button autohotkey
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.