从tkinter打开并运行spyder中的python脚本

时间:2016-01-07 17:20:55

标签: python multithreading tkinter

我希望有办法打开一个'。' Spyder中的文件,并在Tkinter窗口的相关IPython控制台中运行它。 我已经能够使用线程和os.system运行脚本,但我真的想在IPython中从Spyder运行

这是我写的代码,run1有效,但是没有打开spyder来运行它。 我想知道是否存在像run2这样的东西。 (我知道run_in_spyder不是一个函数)。也许Spyder有一些我不知道的CMD命令。

to_run只是一个示例脚本。

这是我的代码的主干。

import Tkinter as tk
import ttk
import tkFileDialog
from PIL import ImageTk, Image
from collections import OrderedDict
import os, sys
from shutil import copy

from threading import Thread
from to_run import make_df

root_dir = os.getcwd()+os.sep

class LipPy_UI:

    def __init__(self, master):
        self.master = master
        self.master.geometry('450x300+200+200')
        self.frame = ttk.Frame(self.master)
        self.style = ttk.Style()
        self.style.theme_use('vista')
        self.title = master.title('Title')
        self.labelText = tk.StringVar()
        self.labelText.set('Welcome. \n From here you can do all kinds of stuff and things!')
        self.introText = tk.Label(self.master, textvariable=self.labelText, height =4)
        self.introText.pack()
        self.button1 = ttk.Button(self.frame, text = 'Run', width = 25, command = self.run)
        self.button1.pack(padx=15,pady=10)
        self.menubar = tk.Menu(self.master)
        self.filemenu = tk.Menu(self.menubar, tearoff = 0)
        self.filemenu.add_command(label = 'Quit', command = self.close_window)
        self.menubar.add_cascade(label = 'File',menu = self.filemenu)
        self.master.config(menu=self.menubar)
        self.frame.pack()

    def run1(self):
        thread1 = Thread(target = make_df)
        thread1.start()

    def run2(self):
        file_to_run = tkFileDialog.askopenfilename()
        desired_working_dir = 'D:\My_Scripts'
        run_in_spyder(runfile(file_to_run, wdir=desired_working_dir))

    def close_window(self):
        self.master.destroy()

if '__main__' == __name__:
    root = tk.Tk()
    LipPy_UI(root)
    root.mainloop()

0 个答案:

没有答案