Что нового

Консольный прогресс бар с интерфейсом[GUI]

arabnesso

Новичок
Сообщения
17
Репутация
0
Версия AutoIt: 3.

Описание:
Здравствуйте, необходимо сделать часовое копирование в виде прогресс бара как у CMD, при нажатии на кнопку "Запустить" пример ниже:
14ee08fd96c1.png

Так же гененировать рандомный текст в txt при нажатии на кнопку "Запустить", так же на протяжении часа. Как только нажали на кнопку запустить, 2 окна text должны быть нередактируемые.

Примечания:
Бюджет 500 рублей.
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
$Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
$Input2 = GUICtrlCreateInput("", 72, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
$Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button2, "poehali")

$times = 1
$start = False

While 1
    Sleep(36000)
    If $start and $times <= 100 Then
        GUICtrlSetData ($Edit1, $times & "%..." & @CRLF, "1")
        $times = $times + 1
        $str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(224, 255, 1))
        Next
        GUICtrlSetData($Input1, $str)
        $str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(224, 255, 1))
        Next
        GUICtrlSetData($Input2, $str)
    EndIf
    If $times = 100 Then
        GUICtrlSetState($Button2, $GUI_ENABLE)
    EndIf
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func poehali()
	GUICtrlSetState($Input1, $GUI_DISABLE)
	GUICtrlSetState($Input2, $GUI_DISABLE)
    GUICtrlSetData($Edit1, "")
    $times = 1
    GUICtrlSetData ($Edit1, "Извлечение...." & @CRLF & "0%..." & @CRLF, "1")
    GUICtrlSetState($Button2, $GUI_DISABLE)
    $start = True
    $str = ""
    For $i=0 To 8
        $str = $str & Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Input1, $str)
    $str = ""
    For $i=0 To 8
        $str = $str & Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Input2, $str)
EndFunc
 
Автор
A

arabnesso

Новичок
Сообщения
17
Репутация
0
hedji сказал(а):
Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
$Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
$Input2 = GUICtrlCreateInput("", 72, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
$Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button2, "poehali")

$times = 1
$start = False

While 1
    Sleep(36000)
    If $start and $times <= 100 Then
        GUICtrlSetData ($Edit1, $times & "%..." & @CRLF, "1")
        $times = $times + 1
        $str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(224, 255, 1))
        Next
        GUICtrlSetData($Input1, $str)
        $str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(224, 255, 1))
        Next
        GUICtrlSetData($Input2, $str)
    EndIf
    If $times = 100 Then
        GUICtrlSetState($Button2, $GUI_ENABLE)
    EndIf
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func poehali()
	GUICtrlSetState($Input1, $GUI_DISABLE)
	GUICtrlSetState($Input2, $GUI_DISABLE)
    GUICtrlSetData($Edit1, "")
    $times = 1
    GUICtrlSetData ($Edit1, "Извлечение...." & @CRLF & "0%..." & @CRLF, "1")
    GUICtrlSetState($Button2, $GUI_DISABLE)
    $start = True
    $str = ""
    For $i=0 To 8
        $str = $str & Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Input1, $str)
    $str = ""
    For $i=0 To 8
        $str = $str & Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Input2, $str)
EndFunc

Спасибо)))
Но тут несколько проблем
1) Если я введу текст в два пункта "text" и "text" то при нажатии на "Запустить" мои данные меняются на другие, а нужно чтобы они оставались если и их задал, если я их не задавал, то кнопка "Запустить" не будет запускаться.
2) Когда нажимаю на кнопку "Сохранить в txt", она не работает, а если просто не нажимать на эту кнопку, то txt документ не появляется, а должен появлятся и туда должо записываться набор различных рандомных символов. А если я не указываю куда сохранять txt, то он автоматически сохраняется рядом со скриптом.
3) И как можно поменять цвет окна, где "Извлечение.." и т.д. на черный, а текст сделать белым?


Добавлено:
Сообщение автоматически объединено:

Еще почему-то резко с 24% соскочило на 8%, если можно и это тоже(
a5a211593712.png
 

hedji

Продвинутый
Сообщения
409
Репутация
94
arabnesso сказал(а):
Но тут несколько проблем
1) Если я введу текст в два пункта "text" и "text" то при нажатии на "Запустить" мои данные меняются на другие, а нужно чтобы они оставались если и их задал, если я их не задавал, то кнопка "Запустить" не будет запускаться.
2) Когда нажимаю на кнопку "Сохранить в txt", она не работает, а если просто не нажимать на эту кнопку, то txt документ не появляется, а должен появлятся и туда должо записываться набор различных рандомных символов. А если я не указываю куда сохранять txt, то он автоматически сохраняется рядом со скриптом.
3) И как можно поменять цвет окна, где "Извлечение.." и т.д. на черный, а текст сделать белым?

Это не проблемы, это изменение изначального ТЗ ;D

1) Заблокировать кнопку запуска до ввода текста в оба поля, а после нажатия кнопки заблокировать сами поля?
2) А что куда сохранять то? И в какой момент?
3)
Код:
$Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUICtrlSetBkColor($Edit1, "0x000000")
GUICtrlSetColor($Edit1, "0xFFFFFF")

4) Мышкой кликнули на строку 7%, для запрета редактирования Edit1 на время работы:
Код:
Func poehali()	
	GUICtrlSetState($Edit1, $GUI_DISABLE)
;..... остальное тело функции
 
Автор
A

arabnesso

Новичок
Сообщения
17
Репутация
0
hedji сказал(а):
Это не проблемы, это изменение изначального ТЗ ;D

Да, я забыл ТЗ дописать(
И кстати txt так же не сохраняется, нужно, чтобы сохранялось)
 

hedji

Продвинутый
Сообщения
409
Репутация
94
arabnesso сказал(а):
И кстати txt так же не сохраняется, нужно, чтобы сохранялось)

Никакой функции на кнопке "Сохранить txt в" не висит, она не будет работать.

Поясните:
- Что нужно сохранить в txt?
- Куда сохранить сам txt?
- В какой момент нужно сохранять?
- Что в момент сохранения делать с полем Edit1 и остальными полями?
 
Автор
A

arabnesso

Новичок
Сообщения
17
Репутация
0
hedji сказал(а):
arabnesso сказал(а):
И кстати txt так же не сохраняется, нужно, чтобы сохранялось)

Никакой функции на кнопке "Сохранить txt в" не висит, она не будет работать.

Поясните:
- Что нужно сохранить в txt?
- Куда сохранить сам txt?
- В какой момент нужно сохранять?
- Что в момент сохранения делать с полем Edit1 и остальными полями?

1) После того как нажали на кнопку "Запустить", автоматически появляется рядом txt документ и туда записываются всякие разные рандомные символы(крякозябры и т.д. можно что угодно)
2) Сохранять txt рядом со скриптом, это в том случае, если не указали куда будет идти сохранение.
3) В момент сохранения с полем ничего не происходит, оно просто недоступно, просто идет процесс "Извлечение..." и пока он не завершится, все это время идет сохранение в txt документ рандомных символов.
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
$Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
$Input2 = GUICtrlCreateInput("", 72, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
$Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUICtrlSetBkColor($Edit1, "0x000000")
GUICtrlSetColor($Edit1, "0xFFFFFF")
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button1, "txt_file")
GUICtrlSetOnEvent($Button2, "poehali")


$times = 1
$start = False
$dir = @ScriptDir

While 1
    Sleep(36000)
    If $start and $times <= 100 Then
        GUICtrlSetData ($Edit1, $times & "%..." & @CRLF, "1")
		$str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(97, 122, 1))
        Next
		FileWriteLine($dir & "\saved.txt", $str)
        $times = $times + 1
    EndIf
    If $times = 100 Then
        GUICtrlSetState($Button2, $GUI_ENABLE)
    EndIf
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func txt_file()
	$dir = FileSelectFolder("Выберете папку для сохоанения txt", @ScriptDir)
EndFunc

Func poehali()
	GUICtrlSetState($Input1, $GUI_DISABLE)
	GUICtrlSetState($Input2, $GUI_DISABLE)
	GUICtrlSetState($Edit1, $GUI_DISABLE)
    GUICtrlSetData($Edit1, "")
    $times = 1
    GUICtrlSetData ($Edit1, "Извлечение...." & @CRLF & "0%..." & @CRLF, "1")
    GUICtrlSetState($Button2, $GUI_DISABLE)
	GUICtrlSetState($Button1, $GUI_DISABLE)
    $start = True
EndFunc
 
Верх