“AttributeError:'NoneType'对象在kv fi中使用FlatButton后没有属性'bind'”

2024-09-29 01:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在我的kv中实现FlatButton,但是我不断得到相同的错误,那就是AttributeError:'NoneType'对象没有属性'bind。它可以单独使用按钮。你知道吗

from flat_kivy.flatapp import FlatApp
from kivy.uix.touchripple import TouchRippleBehavior
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.properties import (StringProperty, NumericProperty, ObjectProperty,
ListProperty, DictProperty, BooleanProperty)


class Login(Screen):
    pass

class MainScreen(Screen):
    pass

class ScreenManager(ScreenManager):
    pass

theRoot = Builder.load_string('''
ScreenManager:
    Login:

<Login>:
    FlatButton:
        text: 'Click Here'
        size_hint: (.4,.25)
''')

class TouchRippleApp(FlatApp):
    def build(self):
        return theRoot

if __name__ == '__main__':
    TouchRippleApp().run()

这是Flat\u Kivy中的FlatButton代码。我被这个问题困住了。你知道吗

class FlatButtonBase(GrabBehavior, LogBehavior, TouchRippleBehavior,
                     ThemeBehavior):
    color = ListProperty([1., 1., 1.])
    color_down = ListProperty([.7, .7, .7])
    border_size = ListProperty([0, 0, 0, 0])
    text = StringProperty('')
    alpha = NumericProperty(1.0)
    style = StringProperty(None, allownone=True)
    color_tuple = ListProperty(['Grey', '500'])
    font_color_tuple = ListProperty(['Grey', '1000'])
    ripple_color_tuple = ListProperty(['Grey', '1000'])
    font_ramp_tuple = ListProperty(None)
    font_size = NumericProperty(12)
    eat_touch = BooleanProperty(False)

    def on_color(self, instance, value):
        self.color_down = [x*.7 for x in value]


class FlatButton(FlatButtonBase, ButtonBehavior, AnchorLayout):
    pass


class RaisedFlatButton(RaisedStyle, FlatButton):
    pass

Tags: fromimportloginpassscreenclasscolorkivy
1条回答
网友
1楼 · 发布于 2024-09-29 01:26:29

也许更简单的方法是用.kv语言创建FlatButton类(在您正在加载的字符串中)Builder.load\u字符串)你知道吗

尝试将此添加到kv字符串:

<FlatButton@Button>: # create a class "FlatButton" that inherits the kivy Button background_normal: "" # Get rid of the kivy Button's default background image background_down: "" # Get rid of the kivy Button's default background image when clicked # Set the background color to transparent if no action is happening to the button # If the button is clicked, it will change it to fully white background_color: (1,1,1,0) if self.state == 'normal' else (1,1,1,1)

然后您可以在python端删除与FlatButton类相关的所有代码,除了为kv创建一个要使用的基类。例如,在python代码中您只需要

class FlatButton(): pass

相关问题 更多 >