Siemens NX 2506 使用 Python Tkinter 报错:This probably means that Tcl wasn’t installed properly.

最近更新于 2025-12-02 20:24

前言

Python 的 Tkinter 图形库底层是用的 TCL/TK 实现。
NX 内嵌的 Python 是带有 TCL/TK 的 dll 引擎文件的,但是没有 TCL/TK 库文件,也就是为什么报错:This probably means that Tcl wasn’t installed properly.
Python 认为你没有安装 TCL/TK,不过 NX 的制造模块也会使用 TCL/TK 库,它就携带了库文件。只是在 NX 2506 中内嵌 Python 携带的 TCL/TK 的 dll 文件是 8.6.15 版本的,而制造模块携带的 TCL/TK 是 8.6.9 的,因此需要修改 TCL/TK 库让它检查版本时允许用 8.6.15 版本的引擎。

修改 TCL/TK 库版本检查

以管理员身份打开记事本。
用记事本编辑 %UGII_BASE_DIR%\MACH\auxiliary\tcl\library\tcl8.6.9 下的 init.tcl 文件
file
将 19 行要求 8.6.9 改为 8.6.15

package require -exact Tcl 8.6.15

file

用记事本编辑 %UGII_BASE_DIR%\MACH\auxiliary\tcl\library\tk8.6.9 下的 tk.tcl 文件
将 14 行要求 8.6.9 改为 8.6.15

package require -exact Tk  8.6.15

file

环境变量

①要么修改 Windows 的环境变量设置,新建 TCL_LIBRARY 和 TK_LIBRARY,把制造模块的 TCL/TK 库路径添加进去,就是上面修改的两个文件所在的路径,分别就是 TCL 和 TK 库路径。

②另外一种方案就是在使用 Tkinter 的代码中嵌入下面代码,在当前代码中临时添加 TCL 和 TK 的环境变量

import os
NX_PATH = os.getenv('UGII_BASE_DIR')
TCL_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tcl8.6.9')
TK_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tk8.6.9')
os.environ["TCL_LIBRARY"] = TCL_PATH
os.environ["TK_LIBRARY"] = TK_PATH

测试

下面是一段完整的测试代码

import os
NX_PATH = os.getenv('UGII_BASE_DIR')
TCL_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tcl8.6.9')
TK_PATH = os.path.join(NX_PATH, r'MACH\auxiliary\tcl\library', 'tk8.6.9')
os.environ["TCL_LIBRARY"] = TCL_PATH
os.environ["TK_LIBRARY"] = TK_PATH

""""
Tkinter 示例程序
"""
import tkinter as tk
from tkinter import messagebox

def on_click():
    messagebox.showinfo("提示", "按钮被点击了!")

root = tk.Tk()
root.title("最简 Tkinter 示例")
root.geometry("300x150")

btn = tk.Button(root, text="点我", command=on_click)
btn.pack(expand=True)

root.mainloop()

使用 NX 运行,Tkinter 正常工作
file

Siemens NX 2506 使用 Python Tkinter 报错:This probably means that Tcl wasn’t installed properly.
Scroll to top
打开目录