在 Abaqus 错误中导入 tkinter

importing tkinter in Abaqus error

我在编写 abaqus 脚本时遇到问题。我正在尝试在 abaqus scipt 中使用 tkinter。当我第一次 运行 我的代码时程序 运行 很好但是当我第二次 运行 我的程序时,abaqus 退出并出现以下错误: “意外的 LoadlibraryA 错误 193 ipc_CONNECTION_BROKEN"

我将 abaqus 6.14 与 python 2.7 一起使用 运行 Intel Paralllal Stuido XE 2015 Composer Edition 64 位更新 2

我的插件 class 看起来像这样:

from abaqusGui import getAFXApp, Activator
from abaqusConstants import ALL
import os
thisPath = os.path.abspath(__file__)
thisDir = os.path.dirname(thisPath)
toolset = getAFXApp().getAFXMainWindow().getPluginToolset()
toolset.registerGuiMenuButton(
    buttonText='Pilot GUI', 
    object= Activator(os.path.join(thisDir, 'pilotDB.py')),
    kernelInitString=''
)

我的 pilotDB class 看起来像这样:

class pilotDB:     
import Tkinter
root = Tkinter.Tk()
app = pilotDB(root)
root.mainloop()
root.quit()

我找到了解决办法: 问题是当我第一次用右上角的 X 关闭 TK window 时,应用程序无法正确销毁 window 所以当我第二次启动应用程序时,它崩溃了。解决方案: 将以下代码添加到我的 pilotDB class:

def shutdown_ttk_repeat(self):
     self.mainroot.eval('::ttk::CancelRepeat')
     self.mainroot.destroy()

然后将销毁协议添加到pilotDB中“init”函数的开头class

def __init__(self, parent):
     self.mainroot=parent
     self.mainroot.protocol("WM_DELETE_WINDOW", self.shutdown_ttk_repeat):