У меня возникли проблемы с назначением имен псевдонимов при импорте классов на языке Киви. Документация Я Ниже here:Как использовать псевдоним в импорте Kivy Language?
Чтобы импортировать что-то из питона:
#:import name x.y.z
эквивалентно:
from x.y import z as name
Я создал сокращенную версию моей проблемы. pieces.py
находится внутри частей упаковки (с соответствующими __init__.py
), а pieces.kv
находится в моей рабочей папке.
частей/pieces.py
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
class PieceA(Button):
pass
class PieceB(Button):
pass
class PieceC(GridLayout):
pass
pieces.kv
#:import Boo pieces.pieces.PieceA
#:import Foo pieces.pieces.PieceB
#:import Too pieces.pieces.PieceC
<Boo>:
text: "A"
<Foo>:
text: "B"
<Too>:
rows: 2
Boo:
Foo:
импорт является, как указано в документации, но псевдонимы Boo, Foo и тоже не существо распознан. Есть также много других версий этого, что неожиданно работает , если я использую оригинальное имя класса, но не имя псевдонима:
#:import Boo pieces.pieces
<PieceA>:
text: "A"
<PieceB>:
text: "B"
<PieceC>:
rows: 2
PieceA:
PieceB:
Даже если я заменяю #:import Boo pieces.pieces
для #:import Boo pieces.pieces.PieceA
. Он продолжает работать до тех пор, пока я использую исходное имя классов, но я не могу использовать псевдонимы. Как использовать псевдоним при импорте класса на языке Kivy?
Я также добавил здесь мои другие 2 файла в случае, если вы хотите проверить.
main.py
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
Builder.load_file('pieces.kv')
class Gallery(GridLayout):
pass
class GalleryApp(App):
def build(self):
return Gallery()
GalleryApp().run()
gallery.kv
<Gallery>:
cols: 3
PieceA:
PieceB:
PieceC:
Возможно, важно указать, что я использую Kivy v1.7.0 ,, на всякий случай, это ошибка. –