diff --git a/ViperFLProject/App/main2.vp b/ViperFLProject/App/main2.vp index 9435dc8..c6e9bc1 100644 --- a/ViperFLProject/App/main2.vp +++ b/ViperFLProject/App/main2.vp @@ -16,6 +16,7 @@ import fltk # 拿不到 main 的局部变量);空指针用 None(C null),不能用整数 0。 term_ptr: t.CPtr = None status_ptr: t.CPtr = None +scheme_idx: int = 0 def on_btn_click(w: bytes, data: bytes): @@ -60,6 +61,24 @@ def on_menu_about(w: bytes, data: bytes): fltk.Fl_Output_set_value(status_ptr, "Menu: Help/About") +def on_style(w: bytes, data: bytes): + """风格切换回调:base→plastic→gtk+→gleam→oxy 循环""" + global scheme_idx + scheme_idx = scheme_idx + 1 + if scheme_idx == 1: + fltk.Fl.set_scheme("plastic") + elif scheme_idx == 2: + fltk.Fl.set_scheme("gtk+") + elif scheme_idx == 3: + fltk.Fl.set_scheme("gleam") + elif scheme_idx == 4: + fltk.Fl.set_scheme("oxy") + else: + fltk.Fl.set_scheme("base") + scheme_idx = 0 + fltk.Fl_Output_set_value(status_ptr, f"Scheme: {fltk.Fl.scheme_string()}") + + def on_tick(w: bytes, data: bytes): """定时器回调:每秒终端打印一次并续订""" fltk.Fl_Terminal_append(term_ptr, "tick\n") @@ -76,8 +95,9 @@ def main() -> int: btn = fltk.Fl_Button(10, 70, 120, 30, "Click Me") check = fltk.Fl_Check_Button(150, 70, 100, 30, "Enable") slider = fltk.Fl_Slider(280, 70, 200, 30) - input_ = fltk.Fl_Input(10, 110, 300, 30, "Type here") - go = fltk.Fl_Button(320, 110, 60, 30, "Go") + input_ = fltk.Fl_Input(10, 110, 240, 30, "Type here") + go = fltk.Fl_Button(260, 110, 60, 30, "Go") + style = fltk.Fl_Button(330, 110, 60, 30, "Style") spinner = fltk.Fl_Spinner(400, 110, 120, 30) browser = fltk.Fl_Browser(10, 150, 280, 140) tree = fltk.Fl_Tree(300, 150, 280, 140) @@ -97,6 +117,7 @@ def main() -> int: check.set_callback(on_check, 0) slider.set_callback(on_slider, 0) go.set_callback(on_go, input_._ptr) + style.set_callback(on_style, 0) # 数值微调框 spinner.set_minimum(0.0)