Как выполнить внешний скрипт с помощью виджета кнопки?

Я пытаюсь выполнить внешний скрипт (с именем EC.py), нажав кнопку на моем графическом интерфейсе (с именем BEN.py), и я хочу, чтобы он был вставлен в список (list1) в моем графическом интерфейсе.

Мой внешний скрипт (EC.py) выглядит так:

import scipy
import numpy as np
from scipy import misc
from scipy import ndimage

I = scipy.misc.imread('lena.jpg').astype(int) 
J = (I/10)*10
K = J + 10
Print K

и мой код GUI (BEN.py):

import os
import Tkinter as tk
import ttk

def Execute():
EC.K
list1.insert(END, K)

мой виджет кнопки:

mybutton = Button(myGUI, text=”Execute Code”, command = Execute).pack()

мой список вывода:

list1 = Listbox(myGUI, height=20, width=80)

Все идет довольно хорошо, за исключением того, что, просто запустив мой код GUI, он уже читает скрипт EC.py, прежде чем я нажму кнопку. Я хочу, чтобы этот скрипт запускался только при нажатии кнопки.

1 ответ

Я полагаю (поскольку вы не написали полный исходный код) вы написали импорт EC перед вызовом EC.K. Конечно, Python генерирует EC.pyc (скомпилированная версия) при запуске, чтобы оптимизировать многомодульный импорт и проверить синтаксис всех подразумеваемых модулей.

То, что вы хотите таким образом, это иметь динамически сгенерированный код. EC.py Я не сосредоточен на вопросах безопасности этого поведения, но самый простой способ - это использовать:

try: execfile ("EC.py")
except Exception,msg:
    print msg
raise
Другие вопросы по тегам