【问题标题】:Unable to click on the CheckBox in AutoIt无法单击 AutoIt 中的复选框
【发布时间】:2013-06-28 12:54:18
【问题描述】:

下面是我的程序。这里我的意图是在用户按下 Button 后显示三个 CheckBoxes。单击ok-Button 后确实会出现它们,但我无法单击CheckBoxes。可能是什么原因?

#include <GUIConstants.au3>  
$gui = GuiCreate("Hello World", 700, 600) 
$Label_HelloWorld = GuiCtrlCreateLabel("Path", 40, 20, 300, 600)
$Button_OK = GuiCtrlCreateButton("OK", 450, 20, 50, 20)    

GuiSetState(@SW_SHOW, $gui) 
While True
    $guimsg = GuiGetMsg()
    Select
        Case $guimsg == $GUI_EVENT_CLOSE
            GuiDelete($gui)
            ExitLoop

        Case $guimsg == $Button_OK
            $Label_sub_folder1 = GuiCtrlCreateLabel("Select the subfolder", 40, 65, 300, 600) 
            $CheckBox1 = GUICtrlCreateCheckbox('functionality', 40, 85, 80, 23)
            $CheckBox2 = GUICtrlCreateCheckbox('performance', 160, 85, 80, 23)
            $CheckBox3 = GUICtrlCreateCheckbox('listening', 280, 85, 80, 23)
            Sleep(50000)
            ExitLoop

    EndSelect
WEnd

【问题讨论】:

  • 这是 AutoIT 中的典型情况,您使用 while 1 这样的永无止境的循环吗?
  • @Kamil,对不起,我已经编辑了代码

标签: autoit


【解决方案1】:

你的代码风格一团糟……我们来看看这段代码:

#include <GUIConstants.au3>

$gui = GUICreate("Test")
$button = GUICtrlCreateButton("ok", 200, 10, 40, 23)
$checkbox = GUICtrlCreateCheckbox("checkbox1", 10, 10, 80, 23)
GUICtrlSetState($checkbox, $GUI_HIDE)
GUISetState(@SW_SHOW)

While True
   Switch GUIGetMsg()
      Case $GUI_EVENT_CLOSE
         ExitLoop
      Case $button
         GUICtrlSetState($checkbox, $GUI_SHOW)
   EndSwitch
WEnd

区别在哪里?它的标签尺寸在高度上不太大。它在显示 GUI 之前定义了每个需要的控制元素。并且只是您想稍后显示的元素首先被隐藏然后显示......

因此,您的主要问题是您在两个语句中的标签高度,这将创建一个标签,该标签将覆盖您的所有以下 GUI 元素,使它们无法使用。您可以 - 如果需要 - 将 GUICtrlSetState($background, $GUI_DISABLE) 与某种 $background 组件(如标签或图形)一起使用,以防止它停留在顶部并阻碍其他 GUI 元素正常工作。

【讨论】:

    【解决方案2】:

    问题是标签比它需要的大很多(600px 高),并且覆盖了复选框。要修复,只需将高度更改为更合理的值(我通常将 18px 用于单行标签)。

    作为额外说明,您不应该在消息循环中睡觉。消息只会排队,GUI 不会响应。相反,您应该有一个可以在后台运行的计时器。

    【讨论】:

      猜你喜欢
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多