Python Kivy:更改min_state_time属性的值不会更改按钮的行为

2024-09-29 19:23:26 发布

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

在我的Kivy应用程序中,我需要一个Button,它将更改屏幕管理器的当前屏幕。但是,我想确保用户不会意外按下它。因此,我设置了on_release()事件,并根据documentation设置。我应该能够设置属性min_state_time(默认值为0.035秒),该属性应该仅在按钮在指定时间段(此处为2秒)处于“关闭”状态后启用on_release()事件

这是Buttonclass

class EscapeButton(ButtonBehavior, Label):
    def __init__(self, **kwargs):
        super(EscapeButton, self).__init__(**kwargs)
        # I'm changing min_state_time:
        self.min_state_time = 2.0
    def on_press(self):
        self.background_color = (1,1,1,0.5)
    def on_release(self):
        self.background_color = (0,0,0,0)

这是kv文件中的同一个class

<EscapeButton>:
    #min_state_time: 2.0 - I tried to set it like this but it didn't work
    background_color: (0,0,0,0)
    canvas.before:
        Color:
            rgba: self.background_color
        Rectangle:
            pos: self.pos
            size: self.size
    font_size: '16sp'
    color: (1,1,1,0.5)

kvButton的实例:

EscapeButton:
    #min_state_time: 2.0 - I also tried here
    text:'X'
    on_release: root.escape_test()

以及main.py中的函数:

    def escape_test(self):
        sm.current = 'settings'

所以,问题是,尽管min_state_time的值发生了变化(我检查了它),但它并没有改变按钮行为中的任何内容,因为on_release()被触发,而不管该值是什么(即立即)。有人知道这是怎么回事吗


Tags: selfsizerelease屏幕timeondef事件

热门问题