2013-10-09 2 views
0

Я пытаюсь запустить TCL-скрипты из Python. У меня есть сторонний пакет TCL, включенный в сценарий TCL (который я должен использовать), который вызывает вызовы на «консоль». Из-за этого, если я просто запустить следующее:python и TCL: как запускать скрипты, которым нужна консоль

z = x.tk.eval('source C:/somePath/GetStatsFirst2.tcl') 

Я получаю следующее сообщение об ошибке:

pydev debugger: starting 
WARNING!!! Unable to add paths from Appinfo: Could not find AppInfo registry entry 
WARNING!!! Unable to add paths from Appinfo: Could not find AppInfo registry entry 
Traceback (most recent call last): 
    File "C:\Users\lab\Documents\Public\eclipse\plugins\org.python.pydev_2.7.5.2013052819\pysrc\pydevd.py", line 1397, in <module> 
    debugger.run(setup['file'], None, None) 
    File "C:\Users\lab\Documents\Public\eclipse\plugins\org.python.pydev_2.7.5.2013052819\pysrc\pydevd.py", line 1090, in run 
    pydev_imports.execfile(file, globals, locals) #execute the script 
    File "C:\Users\lab\Documents\Public\workspace\Version 1\....\TC1.py", line 55, in <module> 
    test() 
    File "C:\Users\lab\Documents\Public\workspace\Version 1\....\TC1.py", line 42, in test 
    z = x.tk.eval('source C:/Users/lab/Documents/Public/TCL/Scripts/GetStatsFirst2.tcl') 
_tkinter.TclError: invalid command name "console" 

Это определенно что-то делать с пакетом, я использую, и проблема может быть неизбежным. Поскольку нет открытой консоли TK (потому что я использую класс TK inter и eval), я чувствую, что есть способ обойти это. Мне кажется, что пакет, который я импортирую, требует наличия консоли TK. При запуске в командной строке или через subprocess.call все работает, но в этих случаях открывается консоль. Я уверен, что пакет действительно ищет консоль. Есть ли способ создать консоль вместе с объектом Tk?

ответ

1

Ahh, console команда.

Команда консоли доступна только

  • на Windows,
  • только с желанием
  • и только в мастер Interp.

Я предлагаю вам вместо этого использовать tkcon. Вам просто нужно найти tkcon.tcl файловые, источник его перед источником GetStatsFirst2.tcl и выполнить следующую команду Tcl:

interp alias {} console {} tkcon 

Это использует tkcon в качестве консоли затем.

Edit: Вы можете выполнить эту команду Tcl с

x.tk.eval('interp alias {} console {} tkcon') 

в Python.

+0

Команда, которую вы дали, представляет собой команду tcl, но возникает вопрос о том, как использовать tcl из сценария python/tkinter. Ваш ответ не очень помогает. –

+0

@BryanOakley А что такое 'source'? команда python? Оп знает, как вычислять команды Tcl. –

+0

Привет, Йоханнес, похоже, что-то сделал, потому что сейчас у меня другая ошибка. Скрипт, вероятно, получил немного дальше. Думаю, я отвечу на ваш ответ. – user442920

Смежные вопросы