gpt4 book ai didi

python - 如何刺激kivy中的按钮?

转载 作者:行者123 更新时间:2023-12-01 08:16:46 26 4
gpt4 key购买 nike

如何使此代码上的 press 方法正常工作?当我按下按钮时,列表会填充,但当我从 Clock 调用它时,则不会。我可以在控制台上看到 populate 打印,但列表不会出现在 View 中。我的意思很简单:如何刺激按下代码中的按钮?

from kivy.config import Config
Config.set('graphics', 'multisamples', '0')
from random import sample
from string import ascii_lowercase
import pyrebase
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock

kv = """

<Row@BoxLayout>:

canvas.before:
Color:
rgba: 0.5, 0.5, 0.5, 1
Rectangle:
size: self.size
pos: self.pos
value: ''
Label:
text: root.value

<Test>:
canvas:
Color:
rgba: 0.3, 0.3, 0.3, 1
Rectangle:
size: self.size
pos: self.pos
rv: rv
orientation: 'vertical'
GridLayout:
cols: 3
rows: 2
size_hint_y: None
height: dp(108)
padding: dp(8)
spacing: dp(16)
Button:
id: populate_btn
text: 'Populate list'
on_press: root.populate()



RecycleView:
id: rv
scroll_type: ['bars', 'content']
scroll_wheel_distance: dp(114)
bar_width: dp(10)
viewclass: 'Row'
RecycleBoxLayout:
default_size: None, dp(56)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
spacing: dp(2)
"""

Builder.load_string(kv)


class Test(BoxLayout):


def __init__(self, **kwargs):
super().__init__(**kwargs)

def populate(self):
print("populate")

self.rv.data = [{'value': ''.join(sample(ascii_lowercase, 6))}
for x in range(50)]

def press(self):
self.ids.populate_btn.dispatch('on_press')


def interval(dt):
x = Test()
x.press()

Clock.schedule_interval(interval, 3)


class TestApp(App):
def build(self):
return Test()

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

最佳答案

导致错误的原因是在interval函数中创建的Test对象与返回buildTest对象不同code> 方法,此外,在 Interval 中创建的 Test 对象被消除,因为它是局部变量。因此,解决方案是通过将其传递给间隔函数来使用相同的引用,我将使用 functools.partial() 函数。

# ...
from functools import partial

# ...

def interval(x, dt):
x.press()

class TestApp(App):
def build(self):
t = Test()
Clock.schedule_interval(partial(interval, t), 3)
return t
# ...

关于python - 如何刺激kivy中的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54936712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com