将自定义按钮添加到屏幕后不再起作用

史蒂文

我的目标是拥有多个屏幕,而其中一个屏幕有一个自定义按钮。在我尝试使用多个屏幕之前,该按钮工作正常。我尝试将自定义按钮的小部件添加到屏幕,但现在它没有响应。我也尝试将 screen 作为超级添加到我的自定义按钮,但显然它不能那样工作。

它没有给出错误,我的自定义按钮没有做任何事情。

这似乎是一个简单的问题,但我找不到任何可比的例子。我对此还是很陌生,所以我很想了解我犯的任何愚蠢的错误。

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior
from kivy.properties import NumericProperty
from kivy.lang import Builder
from kivy.vector import Vector
from kivy.base import runTouchApp
from kivy.core.window import Window
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import Line
from kivy.uix.dropdown import DropDown
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager, Screen

Builder.load_string("""
<HomeScreenLogic>:
    canvas.before:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            pos: self.pos
            size: self.size
    canvas:
        Color:
            rgba: ((25/255, 181/255, 254/255, 1) if self.state == "normal" else (137/255, 196/255, 244/255, 1))
        Ellipse:
            size: root.width/4, root.width/4
            pos: 0.5*root.width - root.width/8, root.height / 8

        Color:
            rgba: 1, 1, 1, 1
        Line:
            width: 2
            points: [root.width/2-root.width/12, root.height/8+root.width/8,root.width/2+root.width/12, root.height/8+root.width/8]
        Color:
            rgba: 1, 1, 1, 1
        Line:
            width: 2
            points: [root.width/2, root.height/8+root.width/8+root.width/12,root.width/2, root.height/8+root.width/8-root.width/12]

<AddScreen>:
    canvas.before:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            pos: self.pos
            size: self.size
""")

class HomeScreenLogic(Widget, ButtonBehavior):
    def collide_point(self, x, y):
        if Vector(x, y).distance((Window.size[0]/2, 7*Window.size[1]/24)) <= Window.size[0]/8:
            print('True')
            return True
        return False

class HomeScreen(Screen):
    def __init__(self, **kwargs):
        super(HomeScreen, self).__init__(**kwargs)
        self.Logic = HomeScreenLogic()
        self.add_widget(self.Logic)

class AddScreen(Screen):
    pass

SM = ScreenManager()
SM.add_widget(HomeScreen(name='Home'))
SM.add_widget(AddScreen(name='Add'))

class HelloWorldApp(App):
    def build(self):
        return SM

if __name__ == "__main__":
    HelloWorldApp().run()

我想有多个屏幕,同时在其中一个屏幕上有一个功能正常的自定义按钮。

史蒂文

我交换了超级 ButtonBehavior 和 Widget,似乎一个压倒了另一个并确保 collide_point 函数不起作用。

class HomeScreenLogic(ButtonBehavior, Widget):
    def collide_point(self, x, y):
        if Vector(x, y).distance((Window.size[0]/2, 7*Window.size[1]/24)) <= Window.size[0]/8:
            print('True')
            return True
        return False

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用下拉操作将自定义按钮添加到屏幕顶部

将自定义样式的按钮添加到CKEditor

将自定义类添加到引导按钮

将自定义文本添加到Twitter按钮

将自定义按钮添加到NavigationToolbarTkAgg

将自定义按钮操作添加到笔管

将自定义视图添加到 NavigationBar 中不起作用?

如何将自定义类添加到 TinyMCE 中的自定义按钮?

将ImageIcons添加到JButtons之后,按钮不再起作用

将自定义按钮颜色添加到Visual Composer按钮设置

添加SSL后,自定义TeamSpeak IP不再起作用

如何将自定义表添加到工作流表单的 reviewTask 屏幕?

将自定义视图类添加到屏幕管理器

在运行时将自定义窗口小部件添加到屏幕

如何将自定义模板添加到Word主屏幕功能区?

将自定义工作流程添加到“创建项目”屏幕

使用 UIApplication.shared.keyWindow?.addSubview Swift 将自定义视图添加到屏幕

如何将自定义按钮添加到AVPlayerViewController?

以编程方式将自定义按钮添加到具有约束的视图

将自定义图像添加到作为RepositoryItemButtonEdit devexpress按钮的网格单元中

在C#.net中将自定义按钮添加到gridview

是否可以将自定义数据添加到通知正文(链接,按钮等)

如何将自定义按钮添加到Summernote工具栏

Java swing:将自定义图形按钮添加到JTree项

无法在Magento中将自定义按钮添加到adminhtml

将自定义ajax按钮添加到WooCommerce管理订单列表

JavaFX 将自定义按钮添加到 HTMLEditor 工具栏的位置

将自定义声音反馈添加到Android按钮

如何将自定义按钮添加到 Bootstrap 输入