0

私はGUIを追加したい単純なCLIベースのプログラムを持っています。最適には、CLIを介してこのスクリプトを実行する機能を保持したいと考えています。これができるのであれば、これにアプローチする最善の方法は何ですか?免責事項:私は比較的新しいTkinterです!Pythonのargparse CLIプログラムをTkinterでGUIに変換するには?

from argparse import ArgumentParser 
from ipaddress import IPv4Network 

def Main(): 
    """ Main Program """ 
    parser = ArgumentParser(
     description='Provided a list of IP addresses, format and output the correct fortigate commands to create them') 
    parser.add_argument('VDOM', help='Specify a VDOM', type=str) 
    parser.add_argument(
     'File', help='Specify a file. Each entry should be on its own line, and have no extra characters', typ=str) 
    args = parser.parse_args() 

    with open(args.File, 'r') as input_file: 
     array = input_file.read().splitlines() 

    with open(args.vdom + '.txt', 'w') as output_file: 
     output_file.write("config vdom\n") 
     output_file.write("edit %s\n" % str(args.vdom)) 
     output_file.write("config firewall address\n\n") 

     for i in range(0, len(array)): 
      try: 
       ip_addr = IPv4Network(array[i]) 
       generateip(ip_addr, output_file) 
      except ValueError: 
       url = array[i] 
       generateurl(url, output_file) 


def generateip(ip_addr, output_file): 
    """ 
    Generate a single IP address object. 

    ip_addr -- IP address network object 
    output_file -- an output text file 
    """ 
    output_file.write("edit \"%s\"\n" % str(ip_addr.with_prefixlen)) 
    output_file.write("set color 1\n") 
    output_file.write("set subnet %s %s\n" % 
        (str(ip_addr.network_address), str(ip_addr.netmask))) 
    output_file.write("next\n\n") 


def generateurl(url, output_file): 
    """ 
    Generate a single URL address object. 

    url -- A valid URL string 
    output_file -- an output text file 
    """ 

    output_file.write("edit %s\n" % url) 
    output_file.write("set color 1\n") 
    output_file.write("set type fqdn\n") 
    output_file.write("set fqdn %s\n" % url) 
    output_file.write("next\n\n") 


if __name__ == '__main__': 
    Main() 
+0

明白な答えは、 "guiを作成する関数を作成し、ユーザが' --gui'オプションを含む場合にのみその関数を呼び出します。違うものをお探しですか? –

+0

ああ、いい考えです。しかし、私のニーズを少し良く説明しましょう。目標は、最終的にこのツールを仕事で使用することです。私はNOCタイプの環境で働き、ここの人のほとんどはPythonをインストールしていません。私はこれを依存関係のない実行可能ファイルに変換する予定です。私は自分自身と他の同僚のCLIバージョンを維持したいと思っています。 2つの別々のプログラムが必要な場合は、そのルートにも行くことができます。 –

答えて

1

チェックアウトhttps://github.com/chriskiehl/Gooey。これにより、ArgParserの引数が自動的にGUIに変換されます。 GUIはコードに依存するため、プログラムのルートは引き続きCLIに依存します。

関連する問題