问题描述
当我希望从函数内部更新变量 total
但函数必须在页面加载时运行时,我应该在哪里声明变量 override func viewDidLoad() {
super.viewDidLoad()
self.functionOne()
self.functionTwo()
self.printTotal()
}
var total = 0
func functionOne(){
total += 1
}
func functionTwo(){
total += 1
}
func printTotal(){
print(total)
}
。
看看下面的代码:
viewDidLoad()
显然,我现在无法声明变量所在的位置,因为此时函数已经运行,总数将重新设置为 0。
我也无法在函数内部移动变量声明,因为这会改变作用域并且其他函数无法再访问。
此外,我无法在其他函数在页面加载时运行之前声明该变量,因为 from kivy.clock import Clock
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu
KV = '''
Screen
MDTextField:
id: field
pos_hint: {'center_x': .5,'center_y': .5}
size_hint_x: None
width: "200dp"
hint_text: "Material"
on_focus: if self.focus: app.menu.open()
'''
class Test(MDApp):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.screen = Builder.load_string(KV)
items = ['PVC','XLPE']
menu_items = [{"text": f"{i}"} for i in items]
self.menu = MDDropdownMenu(
caller=self.screen.ids.field,items=menu_items,position="bottom",width_mult=3,)
self.menu.bind(on_release=self.set_item)
def set_item(self,instance_menu,instance_menu_item):
def set_item(interval):
self.screen.ids.field.text = instance_menu_item.text
instance_menu.dismiss()
Clock.schedule_once(set_item,0.5)
def build(self):
return self.screen
test().run()
本身就是一个函数,因此我无法从外部访问该变量。
注意:我不只是想在这里将两个数字加在一起,我知道有更简单的方法可以做到这一点。这只是我试图克服的问题的一个过于简单化的例子。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)