为了账号安全,请及时绑定邮箱和手机立即绑定

一旦脚本加载到另一个 python 文件中,有没有办法传递功能?

一旦脚本加载到另一个 python 文件中,有没有办法传递功能?

慕姐8265434 2021-11-02 15:38:34
我有一个脚本,它使用exec(open(---))下面看到的东西调用另一个脚本。然后该脚本具有选中的检查按钮,然后当使用“运行”按钮时,选择将信息打印到控制台窗口。当我独立运行上述脚本时,它运行良好。我可以选择按钮和东西打印。但是,当我通过另一个脚本调用窗口时,所有功能都停止工作。所以有些事情没有被忽略,我需要解决这个问题。我正在使用 tkinter 在 python 3 中完成所有这些。由于某些原因,我无法共享大部分代码。这段代码的前半部分是按钮定义,后半部分从 hzeprocess() 开始:是被调用脚本文件中的复选框。def HZEcall():    exec(open("HZETRAN.py").read())    hzeopener= Button(self,text="Click to Open HZETRAN Window",command=HZEcall).place(x=15,y=240)     Var1 = IntVar()    Var2 = IntVar()    Var3 = IntVar()    Check1 = Checkbutton(self, text="INTERPOLATION",variable= Var1,                         font='Helvetica10',relief=RAISED).place(x=15, y=60)    Check2 = Checkbutton(self, text="RAY BY RAY", variable= Var2,                          font='Helvetica 10',relief=RAISED).place(x=15, y=95)    Check3 = Checkbutton(self, text="MCNP", variable= Var3,                         font='Helvetica 10',relief=RAISED).place(x=15, y=130)    def hzeprocess():          Int = Var1.get()        Ray = Var2.get()        MCNPchk = Var3.get()        if Int == 1:            print('Interpolation is Selected')        if Ray == 1:            print('Ray by Ray is Selected')        if MCNPchk == 1:            print('MCNP is Selected')
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您的代码在同一目录中具有 HZEcall 和 HZETRAN.py,因此这将在独立调用时起作用。


但是,当您从不在同一目录中的另一个脚本调用 HZEcall 函数时,这将不起作用,因为您在没有路径的 HZETRAN.py 上调用 exec ,因此它将始终在调用脚本的当前目录中查找脚本。


我建议你在下面做一些事情。另请阅读本文以获取 Python 模块的详细信息。


import HZETRAN

def HZEcall():

    HZETRAN.function_name() # call functionality of HZETRAN

    hzeopener= Button(self,text="Click to Open HZETRAN Window",command=HZEcall).place(x=15,y=240) 


    Var1 = IntVar()

    Var2 = IntVar()

    Var3 = IntVar()

    Check1 = Checkbutton(self, text="INTERPOLATION",variable= Var1,

                         font='Helvetica10',relief=RAISED).place(x=15, y=60)

    Check2 = Checkbutton(self, text="RAY BY RAY", variable= Var2, 

                         font='Helvetica 10',relief=RAISED).place(x=15, y=95)

    Check3 = Checkbutton(self, text="MCNP", variable= Var3,

                         font='Helvetica 10',relief=RAISED).place(x=15, y=130)


    def hzeprocess():  

        Int = Var1.get()

        Ray = Var2.get()

        MCNPchk = Var3.get()


        if Int == 1:

            print('Interpolation is Selected')

        if Ray == 1:

            print('Ray by Ray is Selected')

        if MCNPchk == 1:

            print('MCNP is Selected')


查看完整回答
反对 回复 2021-11-02
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信