kivy python按钮打开时的行为按下禁用

kivy python按钮打开时的行为按下禁用,python,kivy,Python,Kivy,我正在尝试使用kivy构建一个应用程序。我添加了关闭按钮,然后在发布时添加了。但是,按下按钮不起作用 python代码: import kivy kivy.require('1.11.0') from kivy.lang import Builder from kivy.app import App from kivy.core.window import Window from kivy.uix.boxlayout import BoxLayout from kivy.uix.floatlay

我正在尝试使用kivy构建一个应用程序。我添加了关闭按钮,然后在发布时添加了
。但是,按下按钮不起作用

python代码:

import kivy
kivy.require('1.11.0')
from kivy.lang import Builder
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.behaviors import ButtonBehavior
from kivy.core.window import Window


Window.size = (350 * 1.5 , 600 * 1.5)
with open("./template.kv", encoding='utf8') as f:
    Builder.load_string(f.read())

class CloseButton(ButtonBehavior, Image):
    def __init__(self, **kwargs):
        super(CloseButton, self).__init__(**kwargs)
        self.source = './close_btn@2x.png'
    always_release = True

    def on_press(self):
        App.get_running_app().stop()

class Background(Screen):
    def __init__(self, **kwargs):
        super(Background, self).__init__(**kwargs)

class TemplateApp(App):
    def build(self):
        # title bar remove
        # Window.borderless = True
        sm = ScreenManager()
        sm.add_widget(Background(name='back'))
        return sm

if __name__ == '__main__':
    TemplateApp().run()
kivy代码:

<Background>:
    canvas:

        Rectangle:
            pos: self.pos
            size: self.size
            source: "background.png"
    Label:
        font_size: 12 * 1.5
        text: 'Template'
        font_name: './NotoSans-hinted/NotoSans-Regular.ttf'
        size_hint: (1.0, 1.0)
        halign: "left"
        valign: "top"
        color: 0.43568, 0.43568, 0.43568, 1
        text_size: root.width - (40 * 1.5), 583 * 1.5

    BoxLayout:
        size_hint: 1.9, 1.938
        CloseButton:
            id: close_btn
:
画布:
矩形:
pos:self.pos
大小:self.size
来源:“background.png”
标签:
字体大小:12*1.5
文本:“模板”
字体名称:'./NOTSANS提示/NOTSANS常规.ttf'
大小提示:(1.0,1.0)
哈利恩:“左”
valign:“顶部”
颜色:0.43568,0.43568,0.43568,1
文本大小:root.width-(40*1.5),583*1.5
盒子布局:
尺寸提示:1.9,1.938
关闭按钮:
id:close_btn
而不是

    def on_press(self):
        App.get_running_app().stop()
试试这个

self.on_press = App.get_running_app().stop()
好的,让我们试试这个:

from kivy.clock import Clock
...
class CloseButton(ButtonBehavior, Image):
    def __init__(self, **kwargs):
        super(CloseButton, self).__init__(**kwargs)
        self.source = './close_btn@2x.png'
    # no parentheses after method's name!
    self.on_press = self.closeapp

    def closeapp(self):
        Clock.schedule_once(App.get_running_app().stop())

警告:kivy:stderr:AttributeError:“NoneType”对象没有属性“stop”我收到此消息T^I已添加第二个解决方案,请尝试。删除问题中不必要的单词和格式,使其更具可读性。