使用tkinter在exec中中止循环

时间:2018-01-21 16:35:19

标签: python python-3.x tkinter exec

import sys
from tkinter import *
import time

class main:

    def __init__(self, text=""):
        self.root = Tk()
        self.root.title("python editor")
        self.Text = text
        self.window = self.text_window(self, self.Text)
        self.root.mainloop()

    class text_window:

        def __init__(self, master, text):
            self.master = master

            self.textBox = Text(master.root)
            self.textBox.insert(END, text)
            self.textBox.grid(row=0, sticky=NSEW, columnspan=2)
            self.master.root.rowconfigure(0, weight=1)
            self.master.root.columnconfigure(0, weight=1)
            self.buttonOK = Button(master.root, text="run",
                command=self.get_text)
            self.buttonOK.bind('Enter',self.get_text)
            self.buttonOK.grid(row=1, column=2)
            self.buttonNO=Button(master.root, text="close window",command=self.abort)
            self.buttonNO.grid(row=1, column=1)


        def get_text(self):
            text= self.textBox.get(1.0, END)
            if ">>> " in text:
                qwerty=str(exec(text[4:]))
                return qwerty
            else:
                qwerty=exec(text)
                return qwerty


        def abort(self):
            sys.exit()

def get_main(text=""):
    m = main(text)
    output = m.Text
    return output

get_main(">>> ")

我正在尝试创建一个tkinter窗口,它将运行像IDLE这样的多行代码。 除了循环之外的所有东西都可以工作。

如果我尝试运行无限循环(While循环),并尝试中止它,它不会中止并直接运行它,直到窗口显示(没有响应)。

我在Windows 10上使用python 3.6。

0 个答案:

没有答案