python-3.x 属性错误:运行kivy代码时,"kivy. graphics. context_instructions. Color"对象没有属性"fbind"

nfs0ujit  于 2022-12-27  发布在  Python
关注(0)|答案(1)|浏览(113)

下面的代码有什么问题?

# Program to Show how to create a switch
# import kivy module
import kivy

# base Class of your App inherits from the App class.
# app:always refers to the instance of your application
from kivy.app import App

# this restrict the kivy version i.e
# below this kivy version you cannot
# use the app or software
kivy.require('1.9.0')

# Builder is used when .kv file is
# to be used in .py file
from kivy.lang import Builder

# The screen manager is a widget
# dedicated to managing multiple screens for your application.
from kivy.uix.screenmanager import ScreenManager, Screen

# You can create your kv code in the Python file
Builder.load_string(""" 
<ScreenOne>: 
    BoxLayout: 
        canvas.before:
        Color:
            rgba: (.4, .6, 9, 1)                          #(0,0,0,1)
        Rectangle:
            size: self.size
            pos: self.pos
        canvas:
            Color:
                rgba: (1, 1, 1,1)
            RoundedRectangle:
                size : self.width/2, self.height/3
                pos : self.center_x - self.w

idth/4 , self.center_y - self.height/6                         
                radius: [(40, 40), (40, 40), (40, 40), (40, 40)]
               
        Button: 
            text: "Go to Screen 2" 
            background_color : 0, 0, 1, 1 
            on_press: 
                # You can define the duration of the change 
                # and the direction of the slide 
                root.manager.transition.direction = 'left' 
                root.manager.transition.duration = 1 
                root.manager.current = 'screen_two' 

<ScreenTwo>: 
    BoxLayout: 
        Button: 
            text: "Go to Screen 3" 
            background_color : 1, 1, 0, 1 
            on_press: 
                root.manager.transition.direction = 'left' 
                root.manager.transition.duration = 1 
                root.manager.current = 'screen_three' 

<ScreenThree>: 
    BoxLayout: 
        Button: 
            text: "Go to Screen 4" 
            background_color : 1, 0, 1, 1 
            on_press: 
                root.manager.transition.direction = 'left' 
                root.manager.transition.duration = 1 
                root.manager.current = 'screen_four' 

<ScreenFour>: 
    BoxLayout: 
        Button: 
            text: "Go to Screen 5" 
            background_color : 0, 1, 1, 1 
            on_press: 
                root.manager.transition.direction = 'left' 
                root.manager.transition.duration = 1 
                root.manager.current = 'screen_five' 

<ScreenFive>: 
    BoxLayout: 
        Button: 
            text: "Go to Screen 1" 
            background_color : 1, 0, 0, 1 
            on_press: 
                root.manager.transition.direction = 'right' 
                root.manager.current = 'screen_one' 

""")

# Create a class for all screens in which you can include
# helpful methods specific to that screen
class ScreenOne(Screen):
    pass

class ScreenTwo(Screen):
    pass

class ScreenThree(Screen):
    pass

class ScreenFour(Screen):
    pass

class ScreenFive(Screen):
    pass

# The ScreenManager controls moving between screens
screen_manager = ScreenManager()

# Add the screens to the manager and then supply a name
# that is used to switch screens
screen_manager.add_widget(ScreenOne(name="screen_one"))
screen_manager.add_widget(ScreenTwo(name="screen_two"))
screen_manager.add_widget(ScreenThree(name="screen_three"))
screen_manager.add_widget(ScreenFour(name="screen_four"))
screen_manager.add_widget(ScreenFive(name="screen_five"))

# Create the App class
class ScreenApp(App):
    def build(self):
        return screen_manager

    # run the app

sample_app = ScreenApp()
sample_app.run()

我是kivy的新手,在网上得到了这个代码,它工作得很完美。我现在试图通过放一些画布和形状来改变它,但我得到了错误:

AttributeError: 'kivy.graphics.context_instructions.Color' object has no attribute 'fbind'

这意味着什么?我怎样才能再次改变它,以实现我的目标,有我的2个矩形的地方和他们的按钮?

jm81lzqq

jm81lzqq1#

假设你复制粘贴的代码是正确的,缩进是错误的,你把Color指令放在了子部件级别,而不是缩进到canvas.before:下面,这很可能导致你的错误。

相关问题