您尚未登录。

楼主 # 2025-02-07 21:13:43

coollofty
会员
注册时间: 2025-02-07
已发帖子: 6
积分: 106

代码放在函数里和不放在函数里,执行结果居然完全不同

import pika_lvgl as lv

scr = lv.scr_act()
inputH = SystemInfo.fontHeight * 3.5

def createUIToWifiServer(evt):
	wm = WifiManager()
	r = wm.scan()
	if (r < 0):
		print('WifiScan error:', r)
	else:
		for i in range(r):
			wm.get(i)


def createUIToKeyboard(evt):
	kbInput = lv.textarea(scr)
	kbInput.set_pos(0, 0)
	kbInput.set_size(scr.get_width(), inputH)

	kb = lv.keyboard(scr)
	kb.set_textarea(kbInput)

	print('-------1')
	span = lv.label(scr)
	print('-------1')
	span.set_pos(0, inputH + 8)
	span.set_size(scr.get_width(), inputH)
	span.set_flex_align(lv.FLEX_FLOW.ROW_WRAP, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER)
	print('-------1')
	span.set_text('')
	print('-------2')

	tip = lv.label(span)
	tip.set_text('如键盘无法设置密码,可尝试更换方式连接')

	chgMode = lv.btn(span)
	chgMode.set_pos(SystemInfo.fontHeight * 20, inputH + 8)
	chgMode.add_event_cb(createUIToWifiServer, lv.EVENT.CLICKED, 0)
	lv.label(chgMode).set_text('使用手机设置 >')	


createUIToKeyboard(None)

上面这段代码,如果我将createUIToKeyboard函数去掉,将代码向左缩进一格直接执行,就没有任何问题。而这样放在函数里,则只能执行到kb.set_textarea(kbInput)这一行之前,这个函数就不再返回了,后面的print不会执行。这是为何?

离线

楼主 #2 2025-02-09 15:44:11

coollofty
会员
注册时间: 2025-02-07
已发帖子: 6
积分: 106

Re: 代码放在函数里和不放在函数里,执行结果居然完全不同

嗯,确定是空行问题,只要将空行加入和上一行结构相同的空格,问题就解决了。
另外,这个REPL模式我并没有在哪里看到有解释说明,能否提供一些资料我了解一下什么是REPL,谢谢

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn