2016-11-15 61 views
1

我在我的python腳本使用簡單的argparse功能:GUI用於Argparse

def get_args(): 
    """Get CLI arguments and options""" 
    parser = argparse.ArgumentParser(description='AngioTool File Analyzer', 
            formatter_class=argparse.ArgumentDefaultsHelpFormatter) 

    parser.add_argument('rootPath', 
         help="path to files for the experiment", 
         action=FullPaths, type=is_dir) 

    parser.add_argument('-c', help='string to specify the control device to which all devices should be ratioed', default='D1') 
    parser.add_argument('-p', help="list of fields to plot", 
         default=['Total Vessels Length', 'Total Number of End Points', 'Total Number of Junctions']) 
    parser.add_argument('-i', help='string to specify first interval', default='min') 
    parser.add_argument('-t', help='comma serperated list with chart titles to be placed on charts', default="Chart 1, Chart 2, Chart 3") 
    parser.add_argument('-V', action='version', version='%(prog)s 1.0', help='print version number') 

    results = parser.parse_args() 

    return results 

我的目標是結束我的代碼和程序分發到使用py2exe和py2app幾個人。我已經運行了幾個模塊,理論上它可以很容易地從argparse代碼生成一個UI,而不必讓用戶與命令行進行交互。不幸的是,我發現的工具(argparseui,gooey)需要一些處理起來很痛苦的工具(例如pyQT4和wxPython),並且不支持Python3。

是否有任何其他模塊來實現這個簡單的用戶界面從argparse更主流的依賴關係?

+0

你想與貴呢?只有一個txt字段可以輸入命令行克隆?或多個字段和按鈕?或者如何基於瀏覽器的輸入?你的argpsrse使用很簡單。 – hpaulj

+0

我會說Qt和PyQt/PySide是相當主流的依賴,但我同意他們可能很難分發,特別是在Windows上。如果你不想處理分佈式依賴,那麼標準庫中唯一的GUI工具包是[Tkinter](https://docs.python.org/2/library/tkinter.html),儘管它是相當基本的相比Qt –

+0

'PyQt'支持Python 3.有[可下載的二進制文件](https://www.riverbankcomputing.com/software/pyqt/download)python 3.4至少 –

回答

1

既然你不想依賴於任何第三方庫像PyQt的,那麼你應該使用這樣https://github.com/codypiersall/cligui

+0

我反對第三方libs只要因爲他們支持python3。我根本無法讓arparseui工作,因爲它需要pyQT4,而且看起來不再可用。 – agf1997

+0

使用'cligui'和修改主要'#解析命令行輸入 結果= get_args() cligui.CliGui嘗試(結果,無) ROOTPATH = results.rootPath first_interval = results.i ctrl_device = results.c plot_key = results.p graphTitle = [x.strip()for x in results.t.split(',')]''我得到了'AttributeError:'名稱空間'對象沒有屬性'_action_groups'' – agf1997

+0

錯誤消息和代碼塊在註釋中格式不正確。編輯您的原始帖子。並且在發生錯誤時,發佈足夠的回溯信息,以便知道錯誤發生的位置。 'argparse.parse_args'產生一個'Namespace'對象,但是我不知道它會擁有這個屬性。 – hpaulj