Есть ли способ передать функциональность после загрузки скрипта в другой файл Python? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть скрипт, который вызывает другой скрипт, используя материал 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 Ответ

0 голосов
/ 08 февраля 2019

У вас есть код с HZEcall и HZETRAN.py в одном каталоге, так что это будет работать при вызове этого автономного режима.

Но когда вы будете вызывать функцию HZEcall из другого скрипта, который не находится в том же каталоге, это не будет работать, так как вы вызываете exec для HZETRAN.py без пути, поэтому он всегда будет искать скрипт в текущем каталогевызывающий скрипт.

Я предлагаю вам сделать что-то строчку ниже.также прочитайте это , чтобы получить подробную информацию о модулях 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...