与另一个基于TCL的程序一起运行tkinter

时间:2019-04-04 21:40:03

标签: python-3.x tkinter

我使用带有Python 3.7.1的免费Anaconda发行版1.9.6和python 3.7.1在tkinter中运行一个接口,为此,我需要一个用TCL编写的科学模拟软件SIMPSON来执行。

有问题的软件: https://inano.au.dk/about/research-centers/nmr/software/simpson/ (该软件的安装不会带来恶意软件或任何不便之处,如果有人要测试,则此处讨论的除外)

问题在于,甚至是简单代码的执行:

import tkinter as tk

main_window = tk.Tk()
main_window.mainloop()

…返回错误消息:

  

文件“”,第1行,在       runfile('R:/tests/MWE/tkinter_test.py',wdir ='R:/ tests / MWE')

     

文件   “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,   运行文件中的第704行       execfile(文件名,命名空间)

     

文件   “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”,   execfile中的第108行       exec(compile(f.read(),文件名,'exec'),命名空间)

     

第10行中的文件“ R:/tests/MWE/tkinter_test.py”       main_window = tk.Tk()

     

文件“ C:\ ProgramData \ Anaconda3 \ lib \ tkinter__init __。py”,第2023行,   在初始化中       self.tk = _tkinter.create(screenName,baseName,className,交互式,wantobjects,useTk,sync,use)

     

TclError:在以下目录中找不到可用的init.tcl:       {C:\ Program Files(x86)\ SIMPSON \ tcl8.6} C:/ProgramData/Anaconda3/lib/tcl8.6 C:/ProgramData/lib/tcl8.6   C:/lib/tcl8.6 C:/ ProgramData /库C:/库C:/tcl8.6.8/库   C:/tcl8.6.8/library

     

C:/程序文件(x86)/SIMPSON/tcl8.6/init.tcl:版本冲突   软件包“ Tcl”:有8.6.8,需要确切的8.6.2版本冲突   包“ Tcl”:有8.6.8,恰好需要8.6.2       在执行“ package require -exact Tcl 8.6.2”时       (文件“ C:/程序文件(x86)/SIMPSON/tcl8.6/init.tcl”第19行)       从“源{C:/ Program Files(x86)/SIMPSON/tcl8.6/init.tcl}”中调用       (“上级”正文行1)       从“上级#0 [列出源$ tclfile]”中调用

     

这可能意味着Tcl安装不正确。

SIMPSON正常执行。仅在卸载SIMPSON和重新安装Anaconda之后,该问题才会消失,但是必须有一种更简单的方法……

1 个答案:

答案 0 :(得分:0)

从错误消息中,我认为与SIMPSON捆绑在一起的Tcl使得anaconda Tcl出现了问题,因为两者的版本均不同。 SIMPSON的Tcl为8.6.2,而蟒蛇的Tcl为8.6.8,满足Tkinter版本8.6.8。这意味着Tkinter不能与Tcl> = 8.6.8一起运行。

在SIMPSON上更新Tcl应该可以解决该错误。 您也可以尝试更新Anaconda Tcl来解决该问题。

通过命令行(More Details)在Anaconda上更新Tcl / Tk。

命令:

conda install -c conda-forge tk 
conda install -c conda-forge/label/gcc7 tk 
conda install -c conda-forge/label/broken tk 
conda install -c conda-forge/label/cf201901 tk