Автор Тема: Формирование GUI теста по txt  (Прочитано 170 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн SergVrn [?]

  • Новичок
  • *
  • Сообщений: 24
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Доброго времени суток, форумчане.

Подскажите как реализовать такой скрипт с интерфейсом GUI:

В текстовом документе содержатся вопросы теста. Вопросов несколько и они идут - один за другим.

Как скриптом сформировать по этому txt - интерфейс теста с кнопками ?
Если ответ правильный (правильный щелчок на нужную кнопку выбора ответа теста) - то GUI скрывается в трей и появляется через 10-20 минут (если ответ неверный - то окно ничего не делает, никуда не исчезает, а через 1 минуту повторяет случайный вопрос)


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Русское сообщество AutoIt

Формирование GUI теста по txt
« Отправлен: Май 14, 2019, 04:59:23 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8070
  • Репутация: 2311
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Формирование GUI теста по txt
« Ответ #1, Отправлен: Май 14, 2019, 08:42:45 »
SergVrn  [?]
Цитировать
Подскажите как реализовать такой скрипт с интерфейсом GUI:
Ну это не подсказка тут нужна, а реализация задачи.

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $sRead = FileRead('Тестовые вопросы и ответы.txt')
Global $aData = StringRegExp($sRead, '(?s)(Вопрос \d+\r?\n[^\r\n]+\r?\nОтветы:\r?\n.*?\r?\nПравильный:\r?\n[^\r\n]+)', 3)
Global $aQuestion_Bttn[10], $iQuestion_Lbl, $sCorret_Answer

Opt('TrayMenuMode', 1)
TraySetState(2)

$hGUI = GUICreate('Test')

_Random_Question()

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
   
    Switch $nMsg
        Case 0
            ContinueLoop
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aQuestion_Bttn[1] To $aQuestion_Bttn[9]
            If GUICtrlRead($nMsg) = $sCorret_Answer Then
                TraySetState(1)
                GUISetState(@SW_HIDE)
                Sleep(1000 * 60 * 10) ;10 minutes
                GUISetState(@SW_SHOW)
                TraySetState(2)
               
                _Random_Question()
            Else
                Sleep(1000 * 60 * 1) ;1 minute
                _Random_Question()
            EndIf
    EndSwitch
WEnd

Func _Random_Question()
    Local Static $fFirst = True
    Local Static $iLast_Random
   
    Local $iRandom
   
    Do
        $iRandom = Random(0, UBound($aData) - 1, 1)
    Until $iRandom <> $iLast_Random
   
    $iLast_Random = $iRandom
   
    Local $sQuestion = StringRegExpReplace($aData[$iRandom], '(?s)Вопрос \d+\r?\n([^\r\n]+).*', '\1')
    Local $aQuestions = StringSplit(StringStripCR(StringRegExpReplace($aData[$iRandom], '(?s).*?Ответы:\r?\n(.*?)\r?\nПравильный:.*', '\1')), @LF)
   
    $sCorret_Answer = StringRegExpReplace($aData[$iRandom], '(?s).*?\r?\nПравильный:\r?\n([^\r\n]+)', '\1')
   
    If $fFirst Then
        $fFirst = False
        $iQuestion_Lbl = GUICtrlCreateLabel('', 20, 20, 200, 20)
       
        For $i = 1 To 9
            $aQuestion_Bttn[$i] = GUICtrlCreateButton('', 20, $i * 40, 200, 20)
            GUICtrlSetState($aQuestion_Bttn[$i], $GUI_HIDE)
        Next
    EndIf
   
    GUICtrlSetData($iQuestion_Lbl, $sQuestion)
   
    For $i = 1 To 9
        GUICtrlSetData($aQuestion_Bttn[$i], '')
        GUICtrlSetState($aQuestion_Bttn[$i], $GUI_HIDE)
    Next
   
    For $i = 1 To $aQuestions[0]
        GUICtrlSetData($aQuestion_Bttn[$i], $aQuestions[$i])
        GUICtrlSetState($aQuestion_Bttn[$i], $GUI_SHOW)
    Next
EndFunc



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн SergVrn [?]

  • Новичок
  • *
  • Сообщений: 24

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Формирование GUI теста по txt
« Ответ #2, Отправлен: Май 16, 2019, 08:35:13 »
CreatoR спасибо.
Все работает хорошо.
Но немного неточно.

Есть возможность сразу при первом запуске окна - нажать несколько неверных ответов.

Как поменять скрипт, чтобы он при неверном ответе - просто убирал бы кнопки с формы - на 1 минуту (пока длится пауза) ?
А потом бы, спустя минуту - снова показывал их при задании нового вопроса.
Таким образом нельзя будет нажать на кнопки несколько раз - только один раз - на одну кнопку.


Русское сообщество AutoIt

Re: Формирование GUI теста по txt
« Ответ #2 Отправлен: Май 16, 2019, 08:35:13 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
2996 Просмотров
Последний ответ Февраль 20, 2012, 09:31:19
от kibermag1
9 Ответов
4889 Просмотров
Последний ответ Март 05, 2012, 13:37:07
от cobra2029
0 Ответов
1237 Просмотров
Последний ответ Март 03, 2012, 14:45:14
от CreatoR
0 Ответов
1466 Просмотров
Последний ответ Октябрь 20, 2012, 22:27:53
от ypor
6 Ответов
2774 Просмотров
Последний ответ Декабрь 02, 2012, 15:31:59
от shift72
5 Ответов
3688 Просмотров
Последний ответ Июнь 18, 2013, 04:05:50
от Andrey_A
10 Ответов
7202 Просмотров
Последний ответ Сентябрь 22, 2013, 21:20:13
от Юрий
0 Ответов
1246 Просмотров
Последний ответ Сентябрь 21, 2013, 09:06:04
от madmasles
4 Ответов
1493 Просмотров
Последний ответ Май 11, 2016, 06:19:06
от ildar
11 Ответов
2954 Просмотров
Последний ответ Март 01, 2017, 17:14:01
от inververs