Ошибка в Kivy "Формат ревизии должен быть XYZ [-tag]" - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь запустить программу mi, но по какой-то причине я вижу эту ошибку: «Формат редакции должен быть XYZ [-tag]». Я не знаю, что это значит.

Я пытался извлечь некоторые вещи из своего кода, чтобы узнать, что его вызывает, но я еще не понял этого

Вот мой файл python:

#!/usr/bin/python
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
kivy.require("1.11.1")

class Inicial(BoxLayout):
    def __init__(self, **kwargs):
        super(Inicial, self).__init__(**kwargs)
        temperaturaActual = "°C"


class MainApp(App):
    def build(self):
        return Inicial

if __name__=="__main__":
    MainApp().run()

Вот мой файл kv:

#:kivy !

#:kivy !

<Inicial>:
    Label:
        id: "temperatura"
        text: root.temperaturaActual
        size_hint: (.25, .25)
        pos_hint: { 'center_x': .05, 'center_y': .55}
        font_size: 60sp
        font_name: 'C:/Users/mateo/AppData/Local/Microsoft/Windows/Fonts/Roboto-Light'

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Проблема, которую вы указываете, заключается в том, что вы неправильно указываете заголовок в .kv как документы указывает:

Синтаксис файла kv

Файл языка Kivy должен иметь расширение имени файла .kv.

Содержимое файла всегда должно начинаться с заголовка Kivy, где версия должна быть заменена используемой версией языка Kivy. А пока используйте 1.0:

#:kivy 1.0

# content here

В вашем случае вы используете #:kivy ! и повторяете это 2 раза без необходимости.

С другой стороны, у вас есть другие ошибки:

  • Только из объекта доступны из .kv, в вашем случае текущая температура не.

  • Если вы собираетесь указать измерение с помощьюединицы измерения должны быть в виде строк.

  • Метод сборки должен возвращать объект, а не класс. В вашем Initial классе, который является классом, чтобы вернуть объект, вы должны создать его экземпляр, используя Initial()

Учитывая вышеизложенное, решение:

#!/usr/bin/python
import kivy

kivy.require("1.11.1")

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty


class Inicial(BoxLayout):
    <b>temperaturaActual = StringProperty()</b>

    def __init__(self, **kwargs):
        super(Inicial, self).__init__(**kwargs)
        <b>self.temperaturaActual = "°C"</b>


class MainApp(App):
    def build(self):
        return <b>Inicial()</b>


if __name__ == "__main__":
    MainApp().run()
<b>#:kivy 1.11.1</b>

<Inicial>:
    Label:
        id: "temperatura"
        text: root.temperaturaActual
        size_hint: (.25, .25)
        pos_hint: {'center_x': .05, 'center_y': .55}
        <b>font_size: "60sp"</b>
        font_name: 'C:/Users/mateo/AppData/Local/Microsoft/Windows/Fonts/Roboto-Light'
0 голосов
/ 24 октября 2019

Синтаксис #:kivy kv предназначен для объявления минимально совместимой версии Kivy. Вы объявляете версию !. Как говорится в ошибке, ваша версия должна иметь форму X.Y.Z[-tag], например, 1.11.0.

Самое простое решение - удалить строки #:kivy, они не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...