我正在尝试创建一个用于学生状态控制的应用程序,但无法访问python类中的函数。
我尝试了很多方法都没有成功。
arq.py
class Tela(ScreenManager):
pass
class Chamada(Screen):
def chamada_func(self):
self.ids.grid.add_widget(Label(text = 'teste'))
#I would like to press the call button, add the grid label
class Nota(Screen):
pass
class Prg(App):
def build(self):
self.Chamada = Chamada()
return Tela()
Prg().run()
arq.kv
<Tela>:
Screen:
name: 'Principal'
BoxLayout:
id: box_principal
orientation: 'vertical'
padding: 50
spacing: 100
Button:
text: 'Chamada'
on_release: root.current = 'Chamada'
Button:
text: 'Nota'
on_release: root.current = 'Nota'
Button:
text: 'Sair'
Chamada:
name: 'Chamada'
BoxLayout:
id: box_chamada
orientation: 'vertical'
GridLayout:
id: grid
答案 0 :(得分:0)
在班级内部的按钮上使用此按钮:会如何?
以下解决方案说明了如何通过kv文件从类中的另一个子级调用chamada_func()
中实现的方法class Chamada()
。
on_release: root.chamada_func()
<Chamada>:
name: 'Chamada'
BoxLayout:
id: box_chamada
orientation: 'vertical'
GridLayout:
id: grid
Button:
text: 'ok'
size_hint: 1, 0.05
on_release: root.chamada_func()
如何访问功能?
以下解决方案说明了如何从kv文件中的另一个类/屏幕调用chamada_func()
中实现的方法class Chamada()
。
id: chamada
Chamada:
调用方法on_release: root.ids.chamada.chamada_func()
方法中删除self.Chamada = Chamada()
,因为您不希望对象build()
有两个实例。最重要的是,在kv文件中实例化的实例将具有视图/表示,而在Chamada
方法中实例化的另一个实例将没有视图。build
<Chamada>:
KV文件
class Tela(ScreenManager):
pass
class Chamada(Screen):
def chamada_func(self):
self.ids.grid.add_widget(Label(text = 'teste'))
class Nota(Screen):
pass
class Prg(App):
def build(self):
return Tela()
Prg().run()