Nic*_*mps 1 callback python-2.7 kivy
正如标题所说,每次更改值时,我都会尝试打印出Switch小部件的值.我已设法编写回调本身,但我似乎无法弄清楚在我的.kv文件中传递回调的参数.
现在我得到的错误是:'callback()正好接受2个参数(给定1个)'
from kivy.config import Config
Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', 0)
from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.switch import Switch
Builder.load_file('hueLayout.kv')
class hueLayout(BoxLayout):
pwr1_switch = ObjectProperty()
def callback(instance, value):
print 'instance: ', instance
print 'value: ', value
#pwr1_switch.bind(pwr1_switch, active=callback)
class HueController(App):
def build(self):
#self._app_window_size = 5, 20
return hueLayout()
if __name__ == '__main__':
Config.write()
HueController().run()
Run Code Online (Sandbox Code Playgroud)
<hueLayout>:
#size_hint: .5, .5
#pos_hint: {'center_x': .5, 'center_y': .5}
#height: '200dp'
#width: '100dp'
pwr1_switch: pwr1_input
TabbedPanel:
do_default_tab: False
TabbedPanelItem:
text: 'Master'
GridLayout:
cols: 3
Switch:
id: pwr1_input
active: root.callback()
TabbedPanelItem:
text: 'Light 1'
BoxLayout:
TabbedPanelItem:
text: 'Light 2'
TabbedPanelItem:
text: 'Light 3'
Run Code Online (Sandbox Code Playgroud)
谢谢
那么,你的实际错误是因为你有
def callback(instance, value):
print 'instance: ', instance
print 'value: ', value
Run Code Online (Sandbox Code Playgroud)
然后
active: root.callback()
Run Code Online (Sandbox Code Playgroud)
但是回调函数有两个参数(你称之为实例和值的参数),所以你自然会得到你没有提供足够的错误.
看起来您的问题有3个组成部分:
1)说active: root.callback()试图从回调结果中设置活动属性.这与您想要的相反,您希望在活动属性更改时调用 callback().您可以在活动更改时调用该函数.on_active: root.callback()
2)请记住,kv语言中冒号右侧的所有内容都只是python.这意味着如果你调用一个函数,你必须给它正确的参数,没有什么是隐含的.在你的情况下,你正在调用没有参数的callback(),而它需要两个.on_active方法自动接收我认为你真正想要的两个参数,这些参数在kv语言中可以使用'args'关键字访问,如文档中所述.你可以做到on_active: root.callback(*args)传递这些.
3)作为一个类方法,callback()自动接收类实例作为隐式的第一个参数,通常只称为self.实例和值也会传递.您可以在属性文档中查看示例,搜索on_a.所以你需要def callback(self, instance, value)它才能工作.
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |