У меня простая программа на основе CLI, к которой я хотел бы добавить графический интерфейс. Оптимально я хотел бы сохранить возможность запускать этот скрипт через CLI. Если это можно сделать, то каков наилучший способ приблизиться к этому? Отказ от ответственности: я относительно новичок в Tkinter!Преобразование программы CLI в Python argparse в графический интерфейс с Tkinter?
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()
Очевидным ответом является «создать функцию, которая создает gui, и только вызывать эту функцию, если пользователь включает опцию' --gui ». Вы ищете что-то другое? –
Ах, это хорошая идея. Однако позвольте мне объяснить мои потребности немного лучше. Цель состоит в том, чтобы этот инструмент был использован на работе в конечном итоге. Я работаю в среде типа NOC, и большинство людей здесь не имеют установленного python. Я планирую превратить это в исполняемый файл, который не будет иметь никаких зависимостей. Я хочу сохранить версию CLI для себя и пары других сотрудников. Если мне нужны две отдельные программы, я тоже могу пойти по этому пути. –