Python/Kivy:我可以在双击标签时调用函数吗
问题描述
谁能告诉我如何在双击标签 Item1
,Item2
时调用函数 def demo()
?
Can someone tell me how to call function def demo()
on double click of Label Item1
,Item2
?
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
def convert_data(data):
l = []
for item in data:
for key, value in item.items():
l.append({'text': key, 'value': value})
return l
class test():
def demo(self):
print('Demo')
class Invoice(Screen):
def abc(self):
arr = ({'Item1': ''},{'Item2': 1000})
self.rv.data = convert_data(arr)
class MyApp(App):
def build(self):
return Builder.load_file('test.kv')
if __name__ == '__main__':
MyApp().run()
test.kv
<Button@Button>:
font_size: 15
size_hint_y:None
height: 30
<Label@Label>:
font_size: 15
size_hint_y:None
height: 30
<Item@GridLayout>:
cols: 2
text: ""
value: 0
padding : 5, 0
spacing: 10, 0
Label:
size_hint_x: .35
text: root.text
halign: 'left'
valign: 'middle'
canvas.before:
Color:
rgb: .6, .6, .6
Rectangle:
pos: self.pos
size: self.size
Label:
size_hint_x: .15
text: str(root.value)
halign: 'right'
valign: 'middle'
canvas.before:
Color:
rgb: .6, .6, .6
Rectangle:
pos: self.pos
size: self.size
Invoice:
rv: rv
BoxLayout:
orientation: "vertical"
padding : 15, 15
BoxLayout:
orientation: "vertical"
padding : 5, 5
size_hint: .6, None
pos_hint: {'x': .18,}
BoxLayout:
orientation: "horizontal"
padding : 5, 5
spacing: 10, 10
size: 800, 40
size_hint: 1, None
Button:
text: "Show"
size_hint_x: .05
spacing_x: 30
on_press:root.abc()
BoxLayout:
orientation: "horizontal"
size_hint: 1, 1
BoxLayout:
orientation: "vertical"
size_hint: .5, 1
padding : 0, 15
spacing: 10, 10
size: 500, 30
BoxLayout:
RecycleView:
id: rv
viewclass: 'Item'
RecycleBoxLayout:
default_size: None, dp(30)
default_size_hint: 1, None
size_hint_y: None
height: self.minimum_height
orientation: 'vertical'
解决方案
你可以为你的 Label 创建一个子类并附加 double_tap 事件
you can create a subclass of your Label and attach the double_tap event to it
class MyLabel(Label):
def on_touch_down(self, touch):
if touch.is_double_tap:
demo()
相关文章