from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.config import Config
from kivy.clock import Clock
import subprocess
import traceback
import tempfile
import os
import sys
Config.set('graphics', 'width', '500')
Config.set('graphics', 'height', '300')
my_script = """
from kivy.config import Config
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.lang import Builder
import sys
Config.set('graphics', 'width', '300')
Config.set('graphics', 'height', '200')
class Window(App):
n = 0
def build(self):
layout = BoxLayout(orientation='vertical')
self.output_label = Button(text='click-me and leave')
self.output_label.bind(on_press=self.sayhello)
layout.add_widget(self.output_label)
return layout
def sayhello(self, arg):
self.n += 1
print(f'{self.n} Hello!')
def on_stop(self):
print('Goodbye!')
sys.stdout.flush()
Window().run()
"""
class NewWindow(App):
def build(self):
layout = BoxLayout(orientation='vertical')
self.input_text = TextInput(text=my_script)
layout.add_widget(self.input_text)
compile_button = Button(text='Execute script')
compile_button.bind(on_press=self.click)
layout.add_widget(compile_button)
self.output_text = TextInput(readonly=True, multiline=True)
layout.add_widget(self.output_text)
return layout
def click(self, arg):
# thread = Thread(target=self.executar_script, args=(self.input_text.text,))
# thread.start()
self.executar_script(self.input_text.text)