使用Tkinter将Python argparse CLI程序转换为GUI?
我有一个简单的基于CLI的程序,我想添加一个GUI。我最希望保留通过CLI运行此脚本的能力。如果可以做到这一点,最好的方法是什么?免责声明:我对Tkinter比较陌生使用Tkinter将Python argparse CLI程序转换为GUI?,python,user-interface,tkinter,command-line-interface,argparse,Python,User Interface,Tkinter,Command Line Interface,Argparse,我有一个简单的基于CLI的程序,我想添加一个GUI。我最希望保留通过CLI运行此脚本的能力。如果可以做到这一点,最好的方法是什么?免责声明:我对Tkinter比较陌生 from argparse import ArgumentParser from ipaddress import IPv4Network def Main(): """ Main Program """ parser = ArgumentParser( description='Provided
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()
退房。这将自动将ArgParser参数转换为GUI。GUI将依赖于代码,因此程序的根目录仍然依赖于CLI。签出。这将自动将ArgParser参数转换为GUI。GUI将依赖于代码,因此程序的根目录仍然依赖于CLI。显而易见的答案是“创建一个创建GUI的函数,并且仅在用户包含
--GUI
选项时调用该函数”。你在找不同的东西吗?啊,这是个好主意。不过,让我更好地解释一下我的需求。目标是最终在工作中使用此工具。我在NOC类型的环境中工作,这里的大多数人没有安装python。我计划把它变成一个没有任何依赖关系的可执行文件。我想为我自己和几个其他同事维护CLI版本。如果我需要两个独立的程序,我也可以这样做。显而易见的答案是“创建一个创建gui的函数,并且只有在用户包含--gui
选项时才调用该函数”。你在找不同的东西吗?啊,这是个好主意。不过,让我更好地解释一下我的需求。目标是最终在工作中使用此工具。我在NOC类型的环境中工作,这里的大多数人没有安装python。我计划把它变成一个没有任何依赖关系的可执行文件。我想为我自己和几个其他同事维护CLI版本。如果我需要两个独立的程序,我也可以走这条路。