我的代码变得非常密集,所以我希望通过使用变量来简化它,但它不起作用。以下是问题区域附近带注释的代码:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.core.image import Image
from kivy.graphics import Color, Rectangle
from kivy.core.audio import SoundLoader
from kivy.core.text import LabelBase
import pygame
from pygame.locals import*
import random
class RootScreen(ScreenManager):
pass
class StartScreen(Screen):
pass
class StartScreen(Screen):
pass
class LevelsScreen(Screen):
pass
class LevelOneBedroomScreen(Screen):
def __init__(self, **kwargs):
super(LevelOneBedroomScreen, self).__init__(**kwargs)
def next_text(self):
#Here is where I want to use variables
example_var_a = self.ids.level_one_bedroom_progress.text
example_var_b = self.ids.level_one_bedroom_text.text
if example_var_a == 'a01':
example_var_b = 'Why is it that no matter how much I sleep, I always wake up tired?'
example_var_a = 'a02'
elif example_var_a == 'a02':
example_var_b = 'But hey, at least it’s the weekend. What should I do first?'
example_var_a = 'a03'
elif self.ids.level_one_bedroom_progress.text == 'a03': #Decision time!
self.manager.current = 'level one bedroom choice'
elif self.ids.level_one_bedroom_progress.text == 'a03c1':
self.ids.level_one_bedroom_text.text = 'Do I look like a responsible adult to you?'
self.ids.level_one_bedroom_progress.text = 'a03c1a'
elif self.ids.level_one_bedroom_progress.text == 'a03c1a': #Decision time!
self.manager.ids.level_one_bedroom_choice.ids.level_one_bedroom_choice_progress.text = 'a01a'
self.manager.current = 'level one bedroom choice'
elif self.ids.level_one_bedroom_progress.text == 'a03c2':
self.ids.level_one_bedroom_text.text = 'Nothing gets your day started like a hearty brownie!'
self.ids.level_one_bedroom_progress.text = 'a03c2a'
elif self.ids.level_one_bedroom_progress.text == 'a03c2a': #Time to Move!
self.ids.level_one_bedroom_text.text = 'To the Kitchen! Post-haste!'
self.ids.level_one_bedroom_left_button.text = 'Kitchen'
elif self.ids.level_one_bedroom_progress.text == 'a03c3':
self.ids.level_one_bedroom_text.text = 'I\'m too tired for this. Back to sleep it is!'
self.ids.level_one_bedroom_progress.text = 'a03c3a'
elif self.ids.level_one_bedroom_progress.text == 'a03c3a':
self.ids.level_one_bedroom_text.text = 'Goodnight World!'
self.ids.level_one_bedroom_progress.text = 'a03cb'
elif self.ids.level_one_bedroom_progress.text == 'a03cb':
self.manager.current = 'game over'
self.manager.ids.game_over.ids.game_over_text.text = 'a01'
self.manager.ids.game_over.ids.game_over_text.text = 'And so you went to sleep.'
def next_move(self):
if self.ids.level_one_bedroom_progress.text == 'a03c2a':
self.manager.current = 'level one kitchen'
这是.kv: #:import FadeTransition kivy.uix.screenmanager.FadeTransition
<RootScreen>:
transition: FadeTransition()
StartScreen:
id: start_screen
LevelsScreen:
id: levels_screen
LevelOneBedroomScreen:
id: level_one_bedroom
<StartScreen>:
name: 'start'
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'start_screen.png'
FloatLayout:
Image:
source: 'start_screen.png'
allow_stretch: True
keep_ratio: False
size_hint: 1, 1
Button:
text: 'Start'
size_hint: 0.4, 0.3
pos_hint: {'center_x':.5, 'center_y':.5}
font_size: 70
on_release: root.manager.current = 'levels'
<LevelsScreen>:
name: 'levels'
BoxLayout:
padding: 20
spacing: 10
orientation: 'vertical'
BoxLayout:
spacing: 10
Button:
text: 'Level 1'
on_release: root.manager.current = 'level one bedroom'
Button:
Button:
BoxLayout:
spacing: 10
Button:
Button:
Button:
BoxLayout:
spacing: 10
Button:
Button:
Button:
<LevelOneBedroomScreen>:
name: 'level one bedroom'
FloatLayout:
Label:
id: level_one_bedroom_progress
text: 'a01'
Image:
id: level_one_bedroom_image
source: 'placeholder_background.png'
size: self.size
pos: self.pos
allow_stretch: True
keep_ratio: False
BoxLayout:
orientation: 'vertical'
BoxLayout:
orientation: 'vertical'
Label:
text: 'Image of Bedroom'
text_size: self.width, None
valign: 'middle'
halign: 'center'
Button:
id: level_one_bedroom_text
size_hint_y: .32
text: '*YAWN*'
color: .5,.2,1,1
background_color: 0,0,0,0
text_size: self.width, None
valign: 'middle'
halign: 'center'
on_release: root.next_text()
BoxLayout:
size_hint_y: .15
Button:
id: level_one_bedroom_left_button
background_color: 0,0,0,0
on_release: root.next_move()
Button:
text: 'Home'
on_release: root.manager.current = 'levels'
Button:
id: level_one_bedroom_right_button
background_color: 0,0,0,0
当我在不使用变量的情况下编写整个内容时,它可以正常工作。我所讨论的变量在类中:LevelOneBedroomScreen,变量为:example_var_a,example_var_b。先谢谢你。