Как выполнить внешний скрипт с помощью виджета кнопки?
Я пытаюсь выполнить внешний скрипт (с именем 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