上一提交为绕过 CastError 曾改成直接传函数名;现编译器已修(ViperC 70c271d:取址分支 补 Ptr(Ptr(Func)) 分支),`&func` 会正确给出 Ptr(Func)(一级),故恢复原始写法。
54 lines
1.6 KiB
Plaintext
54 lines
1.6 KiB
Plaintext
import vpsdk.vpui as vpui
|
|
import vpsdk.window as window
|
|
import vpsdk.process as process
|
|
import vpsdk.dynlib as dynlib
|
|
import vpsdk.stdlib as stdlib
|
|
import vpsdk.stdio as stdio
|
|
from stdint import *
|
|
import t, c
|
|
|
|
@__attribute__(section(".text.startup"), aligned(16))
|
|
export def _start() -> int:
|
|
base: uint64 = dynlib.load_so("/LIBS/SLOG.SO")
|
|
if base != 0:
|
|
dynlib.so_call1("log_info", "Hello from dynamic library!")
|
|
|
|
root: vpui.Tk = vpui.Tk()
|
|
root.title("Input Demo")
|
|
root.set_style(window.STYLE_WIN7)
|
|
root.geometry(290, 30, 300, 200)
|
|
root.bg_color = uint32(0x1E1E32)
|
|
master: vpui.Tk* = &root
|
|
|
|
entry: vpui.Entry = vpui.Entry(master, 260, 28)
|
|
root.pack(0, vpui.PACK_TOP, vpui.FILL_X, 0, 20, 10)
|
|
result: vpui.Label = vpui.Label(master, "", uint32(0x00FF00))
|
|
root.pack(1, vpui.PACK_BOTTOM, 0, 0, 0, 10)
|
|
|
|
def _on_submit() -> int:
|
|
text: const str = entry.get()
|
|
result.config(text)
|
|
entry.delete(0, -1)
|
|
return 0
|
|
|
|
lbl: vpui.Label = vpui.Label(master, "Name:", 0xFFFFFFFF)
|
|
root.pack(2, vpui.PACK_TOP, 0, 0, 20, 0)
|
|
btn: vpui.Button = vpui.Button(master, 100, 36, "Submit", &_on_submit)
|
|
root.pack(3, vpui.PACK_TOP, 0, 0, 0, 10)
|
|
|
|
root2: vpui.Tk = vpui.Tk()
|
|
root2.title("Test No-Resp")
|
|
root2.set_style(window.STYLE_WIN10)
|
|
root2.geometry(200, 50, 300, 150)
|
|
root2.bg_color = uint32(0x1E1E32)
|
|
master2: vpui.Tk* = &root2
|
|
|
|
lbl2: vpui.Label = vpui.Label(master2, "This window will NOT respond!", 0xFFFFFFFF)
|
|
lbl2.place(10, 10)
|
|
|
|
root2.update()
|
|
|
|
root.mainloop()
|
|
process.exit(0)
|
|
return 0
|