Python+AutoIt實現界面工具開發 使用Pyinstaller轉換.py文件爲.exe可執行程序

前言

  不一樣於Linux服務器上的命令行操做,在windows系統上用戶的使用習慣仍是傾向於使用有界面的工具。若是工具是命令行交互操做的方式,多是有悖於在windows上使用的操做習慣,每每不容易推廣使用。因爲須要維護測試部工具的緣由,其中有一個工具是用AutoIt語言實現的,利用幾天時間把工具源碼學習了一下。發現使用AutoIt能夠快速開發工具界面。固然它也能各類邏輯處理,並且也很方便。html

  可是考慮精力和學習成本,我主要使用AutoIt的方式仍是利用它來實現界面開發以及學習基本的語法完成簡單的邏輯處理,而後使用Python實現核心的業務處理邏輯。經過AutoIt調用函數執行Python編譯後的可執行文件方式來完成工具需求的開發。windows

  我想,本文最適合的讀者是跟我同樣有界面開發困難障礙的同窗,又不想花太多時間去學其餘界面實現開發的同窗。服務器

AutoIt簡述編輯器

   AutoIt一個使用相似BASIC腳本語言的免費軟件,語言簡單、開發工具安裝方便,幫助手冊內容豐富。它設計用於Windows GUI(圖形用戶界面)中進行自動化操做。AutoIt官網:https://www.autoitscript.com/site/autoit/ 。函數

  下面內容來自官網的介紹,以下:工具

AutoIt工具安裝

  Auto工具從官網下載:https://www.autoitscript.com/site/autoit/downloads/。這裏要注意的一點是要安裝全量的AutoIt編輯器。把以下兩個軟件下載,安裝步驟按照提示默認操做就能夠完成。若是隻安裝第1個,就會缺乏本文須要使用的Koda(FormDesigner)菜單欄。oop

   安裝完成後,打開SciTE編輯器。檢查是否包含Koda(FormDesigner)。路徑:菜單欄Tools -> Koda(FormDesigner)。這就是AutoIt界面畫圖的工具,經過拖拽工具欄中的組件到主界面就能夠實現。post

 AutoIt界面繪製和對齊

   AutoIt界面實現就是經過Koda(FormDesigner)界面中windows控件拖拽的主窗口中實現。Standard中有經常使用的windows窗體控件,包括Label、input、Edit、Button、CheckBox、RadioButton、ListBox、ComboBox、Contex Menu
學習

將須要的界面控件拖拽到主界面窗口後,就須要將按照實際須要對齊窗口。以下主界面有3個Lable標籤和3個Input輸入框。開發工具

對齊方法爲按住Shift鍵同時選中須要對齊操做的按鈕,主要對齊方式以下):

對齊方式的描述都有小圖形,挺形象的,應該都知道每一個對齊方式的做用了。能夠本身拉幾個控件下來,每一個嘗試一下看看效果。最終就能獲取你想要的了。

  當控件對齊完成以後。能夠執行Tools ->  Generate Form Code獲取代碼用於後續的編輯了。以下

#include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section $Form1_1 = GUICreate("文件名替換工具", 446, 198, 218, 133) $Label1 = GUICtrlCreateLabel("路徑", 40, 32, 28, 17) $Label2 = GUICtrlCreateLabel("舊字符串", 40, 80, 52, 17) $Label3 = GUICtrlCreateLabel("新字符串", 40, 128, 52, 17) $Input1 = GUICtrlCreateInput("", 120, 32, 257, 21) $Input2 = GUICtrlCreateInput("", 120, 80, 257, 21) $Input3 = GUICtrlCreateInput("", 120, 128, 257, 21) $Button1 = GUICtrlCreateButton("肯定", 112, 160, 57, 25) $Button2 = GUICtrlCreateButton("退出", 224, 160, 65, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Label1 Case $Label2 Case $Label3 EndSwitch WEnd

AutoIt獲取界面輸入和調用外部命令

  實現AutoIt界面,最主要是利用界面讓用戶輸入相關的參數。那麼程序中如何獲取用戶的輸入?主要是經過GUICtrlRead()函數,如須要獲取上述界面中用戶輸入的路徑、舊字符串、新字符串。代碼以下:

$file_path = GUICtrlRead($Input1) $old_str = GUICtrlRead($Input2) $new_str = GUICtrlRead($Input3)

  獲取到用戶的輸入參數後就能夠將參數傳遞給Python實現的業務邏輯了。AutoIt能夠利用Run()函數調用外部命令。如Run("notepad.exe", "", @SW_SHOWMAXIMIZED)。在使用Run()調用以前能夠利用Pyinstaller工具將Python業務處理邏輯.py文件編譯成可直接運行的.exe文件(編譯方法能夠參考使用Pyinstaller轉換.py文件爲.exe可執行程序)。這樣就能夠直接使用Run()函數調用實現了。

調用的外部程序獲取參數的2種常見方式

  一、界面輸入參數少(0~3個)。若是界面輸入參數不多,能夠直接經過傳參的方式完,注意觀察下述調用AutoIt變量的方法。參考代碼以下:

Run(@ComSpec & " /c " & "D:\temp\dist\process.exe " & '"'&$old_str&'"' & " " & '"'&$new_str&'"' & " " & '"'&$file_path&'"' ,"")

  二、界面輸入參數多(好比大於3個)

  建議能夠採用配置文件方式寫入到.ini文件中。而後Python經過讀取配置文件方式獲取輸入。AutoIt將參數寫入.ini文件有現成的函數,很是方便。IniWrite()函數原型以下:

IniWrite ( "filename", "section", "key", "value" )

獲取外部程序輸出結果的2種方式

一、經過StdoutRead()函數獲取。這種方式獲取輸出不穩定,多是我沒掌握到關鍵點。示例以下:

$op  = Run(@ComSpec & " /c " & "D:\temp\dist\process.exe " & '"'&$old_str&'"' & " " & '"'&$new_str&'"' & " " & '"'&$file_path&'"' ,"",@SW_HIDE,$STDOUT_CHILD + $STDERR_CHILD)
$strResult = ""
while 1
    $line = StdoutRead($op)
    if @error Then ExitLoop
    $strResult = $strResult & $line
WEnd
ConsoleWrite($strResult)

二、調用ipconfig命令並將結果輸出到文件,AutoIT經過讀取文件內容獲取。示例以下

$strResult = ""
Local $ipconfig_result_file = @ScriptDir & "\ipconfig_result_file.txt"
ConsoleWrite(@ComSpec & " /c " & "ipconfig > " & '"'&$ipconfig_result_file&'"')
RunWait(@ComSpec & " /c " & "ipconfig > " & '"'&$ipconfig_result_file&'"', "",@SW_HIDE)

$fp = FileOpen($ipconfig_result_file, 0)
if $fp <> -1 Then
 While 1
    $line= FileReadLine($fp)
    If @error = -1 Then ExitLoop
    $strResult = $strResult & $line & @CR
 Wend
EndIf
FileClose($fp)

ConsoleWrite($strResult)

寫在最後

  本文爲界面開發實現有困難的(如本人)同窗提供一種能夠快速實現界面開發的思路。針對AutoIt語言我的也是現學現用,沒有太多的深刻研究。另外AutoIt開發工具小巧、安裝方便、且AutoIt幫助手冊中有全部函數定義和使用的很是詳細介紹,有興趣的同窗能夠了解一下。上手很容易。最後針對AutoIt+Python實現界面工具開發的總結步驟主要爲:

  一、利用ScitTe編輯器中的Koda FormDesigner組件拖拽、對齊快速實現界面原型開發。並將界面原型反向生成獲取源碼。

  二、利用Python實現核心業務邏輯處理,經過pyinstaller將.py文件轉換成可直接運行.exe文件。

  三、利用GUICtrlRead()函數獲取用戶界面輸入,利用Run()函數調用.exe程序並將參數傳遞進去,實現業務處理。

  四、工具開發完成。

相關文章
相關標籤/搜索