Files
ViperOS/Apps/HelloWorld/main.vp
T
TermiNexus f42d8a5248 revert(HelloWorld): 回调恢复为 &_on_submit(编译器已支持对函数取址)
上一提交为绕过 CastError 曾改成直接传函数名;现编译器已修(ViperC 70c271d:取址分支
补 Ptr(Ptr(Func)) 分支),`&func` 会正确给出 Ptr(Func)(一级),故恢复原始写法。
2026-10-14 16:38:18 +08:00

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