2013-07-01 155 views
0

下面是我的程序。在這裏我的目的是要顯示三個的CheckBox用戶按下按鈕。他們點擊後ok出現 - 按鈕,但我無法點擊的CheckBox。可能是什麼原因?無法點擊AutoIt中的CheckBox

#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 
+0

這是典型的AutoIT,你用'while 1'永不結束這樣的循環嗎? – Kamil

+0

@Kamil,對不起,我已經編輯的代碼 –

回答

1

問題是標籤比它需要的大(600px高),並覆蓋了複選框。要修復只是將高度更改爲更合理的值(我通常使用18px單線標籤)。

作爲一個額外的筆記,你不應該的消息循環內睡覺。消息只會排隊等待,GUI將不會響應。相反,你應該有一個可以在後臺運行的計時器。

+0

非常感謝你 –

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 -component一個標籤或圖形,以防止它停留在頂部,阻礙其他GUI元素能夠正常工作的。

+0

非常感謝你 –