Как сделать второй экран для вывода принтов Kivy
Нyжно ,что бы при нажатие на кнопкy 'Start' приложение переходило на второй экран и выводило 'Hi'
Main.py:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class Scr1(BoxLayout):
def Hi(self):
While True:
print('Hi')
class Scr2():
pass
class MyApp(App):
def build(self):
box = BoxLayout()
button1 = Button(text="start")
box.add_widget(button1)
return box
if __name__ == "__main__":
MyApp().run()
.kv:
<Scr1>
Button:
size: 100,30
text: "start"
on_press:
root.Hi()
Ответы (1 шт):
Автор решения: igorzyden
→ Ссылка
print('Hi') и вывод слова "Hi" в окне - это абсолютно разные процессы, не имеющие ничего общего.
Чтобы в стартовом окне создать кнопку "start" - не нужно делать двойную работу. Либо в файле *.py через функцию и команду add_widget, либо прямо в файле *.kv
Ну и в файле *.kv создать еще один виджет, который и будет тем самым заветным окном с текстом "Hi".
Рабочий пример программы из двух файлов ниже
Файл Main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class ScreenManager(ScreenManager):
pass
class Scr1(Screen):
pass
class Scr2(Screen):
pass
kv = Builder.load_file("My.kv")
class MyApp(App):
def build(self):
return kv
MyApp().run()
Файл My.kv
ScreenManager:
Scr1:
Scr2:
<Scr1>:
name: "scr1"
BoxLayout:
Button:
size: 100,30
text: "start"
on_press: root.manager.current = 'scr2'
<Scr2>
name: "scr2"
BoxLayout:
Label:
text: "Hi"