使用tkinter的python命令行样式应用程序

使用tkinter的python命令行样式应用程序,python,command-line,tkinter,Python,Command Line,Tkinter,在我目前正在使用的应用程序中,我想包括一个功能,管理员可以在其中访问某种命令行。 这不是实际的命令行,而是在我定义的文本框中查找关键字,并使用输入参数运行其链接函数。 例如: get user data: erikthered …将运行方法self.user\u data('erikthered'),但我不确定如何优雅地进入这一步,而不使用诸如eval或exec之类的混乱内容 理想情况下,这些功能也适用于多个参数。 如果这个问题被认为是主观的,我很抱歉,但我以前没有真正编写过这样的程序,我很重

在我目前正在使用的应用程序中,我想包括一个功能,管理员可以在其中访问某种命令行。
这不是实际的命令行,而是在我定义的文本框中查找关键字,并使用输入参数运行其链接函数。
例如:

get user data: erikthered
…将运行方法
self.user\u data('erikthered')
,但我不确定如何优雅地进入这一步,而不使用诸如
eval
exec
之类的混乱内容
理想情况下,这些功能也适用于多个参数。
如果这个问题被认为是主观的,我很抱歉,但我以前没有真正编写过这样的程序,我很重视其他人的见解。
谢谢

更新 使用
exec
的一种方法是使用字典,如下所示:

    links = {'get users':'self.get_users(parameters)', 'get user data':'self.get_user_data(parameters)'}

    terminal = self.terminal
    line = str(terminal.index(INSERT).split('.')[0])
    #get index of line

    line = terminal.get(line+'.0', line+'.end')
    splitline = line.split(':')

    command = splitline[0]
    parameters = splitline[1].split(',')
    exec(links[command])

这是我必须获取用户键入的文本的代码,绑定到返回键。但是我不想使用
exec

如果您不想使用
exec
,您可以使用以下函数字典:

def get_user_data(*args):
    print(*args)
# dictionary of functions
functions = {'get user data': get_user_data}

line = "get user data: erikthered, turtle"

# parse line
command, params = line.split(":")
params = [p.strip() for p in params.split(",")]
functions[command](*params)

我能看看完整的代码吗?这个问题是否与Tkinter或实际的命令行有关,或者这纯粹是关于如何解析和评估一些虚构的命令语言?你是对的,它可能与解析输入有关,而不是Tkinter或实际的命令行出于兴趣,将
params.replace(“,”).split(“,”
,而不是列表comp,也可以工作?在这种情况下,包含空格的参数将出现问题,例如,“绿海龟”将变为“绿海龟”。