我已经用这个代码工作了好几天了
我不能让它工作,我的目标是将一个参数从一个不同类的函数传递到另一个不同类的函数,而不影响“自身”
请参阅示例代码
PY代码:
`
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.button import Button
#Custom Button
class PassdataButton(Button):
def on_release(self):
ThisScreen.getters(datas=['5','3'])
class ThisScreen(Screen):
def getters(self,datas):
self.ids.gettersBox.text = f"There is {datas[0]} Apple's and {datas[0]} Banana's"
class SM(ScreenManager):
pass
kv_file = Builder.load_file('getData.kv')
class projectApps(App):
def build(self):
return kv_file
if __name__ == "__main__":
projectApps().run()
`
KV代码:
SM:
ThisScreen:
name: 'ThisScreen'
<ThisScreen>:
canvas.before:
canvas:
Rectangle:
size: self.size
source: 'im-502378444.jpg'
BoxLayout:
padding: 10
orientation: 'vertical'
TextInput:
id: gettersBox
BoxLayout:
size_hint_y: .3
orientation: 'horizontal'
Button:
text: 'GetterButton'
on_release: root.getters(datas = 'this data is from GetterButton')
#CustomButton
PassdataButton:
text: "Apple's & Banana's"
每次我运行代码并单击我创建的自定义按钮时,都会得到一个错误
ThisScreen.getters(datas=['5','3'])
TypeError: getters() missing 1 required positional argument: 'self'
当我为self-like ThisScreen.getters(self=True, datas=['5','3'])
的缺失位置参数添加一个值时,它会给我不同的错误,并且我无法在getters()函数下访问/调用其他元素
self.ids.gettersBox.text = f"There is {datas[0]} Apple's and {datas[0]} Banana's"
AttributeError: 'bool' object has no attribute 'ids'
希望你能帮助我用这个简单的代码
非常感谢
你有两个选择
1。您可以直接从kv文件传递它。由于您已经在
ThisScreen
屏幕上,您只需删除python中的on_relase
方法,然后从根目录中调用.kv
内的函数,如下所示:2.或者,如果您想使用python实现此目的,您必须获得您的跑步应用程序,屏幕管理器,然后跳转到具有所需功能的屏幕,并且只有在那里您才能调用getter:
相关问题 更多 >
编程相关推荐