如果我想on_press
在任何程序中向弹出窗口添加事件,我可以直接在python中或使用kv语言.
例如,如果我使用Python
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.button import Button
class SomePopup(Popup):
pass
class SomeBox(Box):
popup = SomePopup()
popup.title = 'anything'
popup.content = Button(text='anytext', on_press=popup.dismiss)
Run Code Online (Sandbox Code Playgroud)
在KV语言中,假设我制作相同的弹出窗口,它将是.
<SomePopup>
title: 'anything'
content: popupContent
Button:
id: popupContent
text: 'anytext'
on_press: root.dismiss()
Run Code Online (Sandbox Code Playgroud)
所以,在python中,我必须使用on_press=popup.dismiss
和kv语言on_press: root_dismiss()
我不明白为什么在kivy语言中我应该使用括号而不是python.请问你能帮帮我吗?
虽然两者都实现了相同的功能,但是kv和Python以不同的方式实现它们.
在Python中,当你这样做时Button(text='anytext', on_press=popup.dismiss)
,你实际上是在告诉kivy:当发生按下时,调用popup.dismiss
方法.也就是说,你传给它一个对象(在这种情况下是一个类方法),kivy会在正确的时间调用它.
在kv中,当你这样做时on_press: root.dismiss()
,当按下事件发生时,kivy将执行冒号后面的任何文本(root.dismiss()
在这种情况下).因此,您需要root.dismiss()
在该文本中对自己进行调用.
归档时间: |
|
查看次数: |
306 次 |
最近记录: |