aardio事件响应

事件响应机制

今天接触编程中的事件响应机制,感觉就像给程序赋予了对外界变化做出反应的能力,特别神奇!

按钮点击:程序的积极反馈

先从按钮点击事件入手。这就如同现实中按下开关会有相应动作,在程序里给按钮设定好规则,点击它就能触发特定操作。我写了段代码创建了一个小窗口,里面有个按钮,上面写着"触发惊喜"。当我点击这个按钮时,程序弹出一个消息框,显示"惊喜已触发!",特别有趣!

css 复制代码
import win.ui;
/*DSG{{*/
var winform = win.form(text="按钮点击乐趣多";right=350;bottom=180)
winform.add(
button={cls="button";text="触发惊喜";left=130;top=70;right=220;bottom=110;z=1}
)
/*}}*/

winform.button.oncommand = function(id,event){
    win.msgbox("惊喜已触发!")
}

winform.show()
win.loopMessage()

窗口关闭:确认与保留

接着研究窗口关闭事件。以往关闭窗口没多想,现在明白程序在背后其实有处理逻辑。我编写的代码让关闭窗口时弹出确认框,询问"真的要离开这个奇妙窗口吗?",如果选择"确定",窗口就会关闭;要是选"取消",窗口会继续保留,就好像在提醒自己再考虑考虑。

ini 复制代码
import win.ui;
/*DSG{{*/
var winform = win.form(text="窗口关闭确认体验")
winform.add({
    button={cls="button";text="关闭窗口";left=550;top=360;right=680;bottom=400; 
    };
})
/*}}*/

winform.button.oncommand = function(){
    var closed = win.msgboxTest("真的要离开这个奇妙窗口吗?")
    if(closed == "确定"){
        winform.close();  
    } else {
        win.msgbox("窗口继续陪伴你!")
    }
}
winform.show();
win.loopMessage();

鼠标移动:位置追踪

鼠标移动事件也很有意思。我写的代码能让鼠标在窗口内移动时,实时在窗口中的文本框显示鼠标的坐标位置,就像程序在默默地追踪鼠标的动向。

ini 复制代码
import win.ui;
/*DSG{{*/
var winform = win.form(text="鼠标位置追踪";right=350;bottom=180)
winform.add(
edit={cls="edit";left=10;top=10;right=300;bottom=170;ah=1;aw=1;edge=1;multiline=1;z=1}
)
/*}}*/

import mouse.hook;
var coordinate = mouse.hook();

coordinate.proc = function(msg,x,y){
    winform.edit.print("鼠标此刻坐标:",x,y)        
} 
winform.show();
win.loopMessage();

综合练习:功能大集合

最后挑战了综合习题,做了一个带按钮和文本框的窗口。点击"显示内容"按钮能把文本框里的内容显示在消息框中;点击"关闭窗口"会弹出确认框,询问是否真要关闭;点击"获取鼠标位置",再点击鼠标就能在文本框显示鼠标位置。经过一番尝试,代码成功运行,看着程序按预期做出反应,满满的成就感!看来编程就是不断把小功能组合起来实现更强大的效果,我得继续加油!

ini 复制代码
import win.ui;
import mouse.hook;
/*DSG{{*/
var winform = win.form(text="综合功能体验";right=350;bottom=180,topmost=1)
winform.add(
button={cls="button";text="显示内容";left=10;top=120;right=100;bottom=160;z=1};
button2={cls="button";text="关闭窗口";left=250;top=120;right=330;bottom=155;z=3};
button3={cls="button";text="获取鼠标位置";left=130;top=120;right=220;bottom=155;z=4};
edit={cls="edit";left=20;top=20;right=300;edge=1;bottom=90;ah=1;aw=1;multiline=1;z=2}
)
/*}}*/

winform.button.oncommand = function(id,event){
    var text = winform.edit.text;
    win.msgbox("文本框内容是:"+text)
}

winform.button2.oncommand = function(){
    var closed = win.msgboxTest("真的要关闭这个窗口吗?")
    if(closed == "确定"){
        winform.close();  
    }    
}

winform.button3.oncommand = function(id,event){
    var coordinate = mouse.hook();
    coordinate.proc = function(msg,x,y){
        select(msg) {
            case 0x201/*_WM*/{
                winform.edit.print("鼠标位置:",x,y)
            }        
        } 
    }
}

winform.show()
win.loopMessage()
相关推荐
Helix2503 天前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
Helix2503 天前
Python与其他编程语言优劣势对比:2026初学者选型指南
java·python·教程·编程语言·入门·初学者编程选型
狼爷4 天前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
天若有情6734 天前
开源|Comfort Lang v1.0.1,一款主打清爽交互的新型命令式编程语言
python·开源·交互·编程语言·项目分享·repl·comfort lang
被摘下的星星5 天前
编程de强语言和弱语言
编程语言
codigger6 天前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
Sammyyyyy8 天前
结构化决策模型 Jev 实战笔记,3 个原语、4 个限制、5 个落地场景
人工智能·笔记·开发工具·编程语言
武雄(小星Ai)12 天前
Opus 5.5 降价40%、GPT-6 API腰斩:2026年9月AI编程模型选购指南(附成本计算器)
人工智能·ai·编程语言
柯南466812 天前
【AI开发之Rust】第 21 课:双端集成与出包 —— Android(.so→AAR)与 iOS(xcframework)
rust·编程语言