Это, кажется, глупый вопрос. Но у меня есть виджет, который я хочу добавить на экран под названием GameScreen.Kivy Добавление виджета на экран
Это мой код Python:
class WelcomeScreen(Screen):
pass
class BasicScreen(Screen):
pass
class GameScreen(Screen):
parent = Widget()
game = ShootingGame()
parent.add_widget(game)
Clock.schedule_interval(game.update, 1.0/60.0)
# return parent
sm = ScreenManager()
sm.add_widget(WelcomeScreen(name='welcome'))
sm.add_widget(BasicScreen(name='basic'))
sm.add_widget(GameScreen(name='game'))
class ShootingApp(App):
def build(self):
print(sm.current)
return sm
if __name__ == '__main__':
ShootingApp().run()
И это мой kivy код:
<WelcomeScreen>:
Button:
text: "Learn about haptic illusions"
size_hint: None, None
size: 500, 70
pos: 100, 200
font_size: 30
on_release: app.root.current = "basic"
Button:
text: "Play our game"
size_hint: None, None
size: 500, 70
pos: 100, 100
font_size: 30
on_release: app.root.current = "game"
<BasicScreen>:
name: "basic"
<GameScreen>:
name: "game"
Ошибка я получаю это. И я думаю, это связано с тем, что я уже определил родителя для игры с виджетами. Однако мне нужен этот родитель, потому что виджет игры использует значения ширины и высоты своего родителя (например, self.parent.width). Существует ли какое-либо обходное решение для этого, чтобы виджет игры мог быть вложен в родительский элемент и добавить родителя к экрану?
kivy.uix.widget.WidgetException: Cannot add <Screen name='game'>, it already has a parent <kivy.uix.widget.Widget object at 0x1093dc8d8>
Спасибо, ребята!
родительской свойство автоматически устанавливается на родитель, когда ребенок добавляется к другому виджету, http://kivy.org/docs/api-kivy.uix. widget.html? highlight = parent # kivy.uix.widget.Widget.parent поэтому в вашем коде вы переопределяете родительское свойство и устанавливаете его в widget(), а когда вы добавляете GameScreen в sm, он создает исключение, которое GameScreen уже есть родитель, просто add_widget (игра) будет работать – fins
Спасибо за ваш ответ! Это имеет смысл. Но выполнение add_widget (игры) дает мне имя «add_widget» не определено » – susanz