Получить словарь Python из словаря Tcl - PullRequest
1 голос
/ 19 марта 2019

Я хочу получить словарь Python из словаря Tcl в одном файле tk.call.Это как-то возможно?

Пример:

import tkinter

desiredDict =  {"first": "Foo", "second": "Bar", "third": "Baz"}

tk = tkinter.Tcl()
tk.call("set", "data(first)", "Foo" )
tk.call("set", "data(second)", "Bar" )
tk.call("set", "data(third)", "Baz" )
foo = tk.call("array", "get", "data" )
tclKeys =  tk.call("dict", "keys", foo)
fromTcl  = tk.call("dict", "get", foo, "first")

print(foo)
print(tclKeys)
print(fromTcl)
print(type(foo))
# print(dir(foo))

Я знаю, что могу получить ключи с tk.call("dict", "keys", foo), а затем каждое отдельное значение с tk.call("dict", "get", foo, "..."), но я хочу получить словарь Python(см. desiredDict) в одном tk.call.Это не проблема с графическим интерфейсом, я не работаю с графическим интерфейсом здесь.

Ответы [ 2 ]

3 голосов
/ 19 марта 2019

В Tkinter нет общедоступной функции для извлечения диктата Tcl, но есть частная:

>>> tkinter._splitdict(tk, foo)
{'second': 'Bar', 'third': 'Baz', 'first': 'Foo'}
1 голос
/ 19 марта 2019

Я не знаю, где находится соответствующая документация, но если вы хотите использовать Python и методы, которые вы представили, это работает:

keys = desiredDict.keys()
d = dict(zip(keys, (tk.call("dict", "get", foo, key) for key in keys)))
assert d == desiredDict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...