在 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):
我在编写 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):