Пример кнопки Kivy закрывается сразу при тестировании - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь изучить Kivy на их примерах, но у меня проблема. Я использую их кнопку do c пример:

from kivy.uix.button import Button

def callback(instance):
    print('The button <%s> is being pressed' % instance.text)

btn1 = Button(text='Hello world 1')
btn1.bind(on_press=callback)
btn2 = Button(text='Hello world 2')
btn2.bind(on_press=callback)

Однако программа запускается и сразу закрывается. Я предположил, что это может быть tkinter, где программа работает с константой l oop, и вам нужно добавить что-то в конце, чтобы она не закрывалась, но я не смог найти ничего в их документации по этому поводу.

Повторюсь, я не получаю никаких ошибок, файл просто запускается, я получаю очень короткое всплывающее окно, а затем все заканчивается. У меня нет интерфейса.

1 Ответ

1 голос
/ 10 июля 2020

Во-первых, kivy нужен l oop для управления всеми собственными функциями. Итак, нам нужен класс App, и мы должны возвращать наши макеты напрямую или макеты в диспетчере экрана. В документации Kivy-Button , Kivy показывает вам только связанную часть . Таким образом, нет никакого класса приложения или l oop для управления, поэтому программа запускается и немедленно закрывается, потому что класс приложения не l oop window.

Если вы новичок и пытаетесь изучить kivy Из документации вам нужно понять, как на самом деле работает Kivy и как документация все объясняет. Я делюсь этим кодом ниже для вас, вам нужно понимать добавление-удаление виджетов, устанавливать макеты, ... в kivy из документации или искать примеры полного кода, не являющиеся частью.

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class TestLayout(BoxLayout):
    def __init__(self, **kwargs):
        super(TestLayout, self).__init__(**kwargs)
        self.orientation = 'vertical'
        but1 = Button(text='Button1')
        self.add_widget(but1)
        but2 = Button(text='Button2')
        self.add_widget(but2)
class MyApp(App):
    def build(self):
        return TestLayout()
if __name__ == '__main__':
    MyApp().run()

Когда вы Чтобы понять, как это работает, вам следует начать использовать Screen Manager для простого создания страниц, отправки и получения значений (и многого другого) для ваших приложений. Надеюсь, это поможет вам в начале. Удачи.

...