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()
相关推荐
神经星星1 天前
【TVM教程】在 Arduino 上为 microTVM 训练视觉模型
人工智能·机器学习·编程语言
明月与玄武3 天前
Python编程的真谛:超越语法,理解编程本质
python·编程语言
Mirageef4 天前
aardio界面和控件
编程语言
Mirageef7 天前
aardio批处理脚本
编程语言
楽码7 天前
理解go指针和值传递
后端·go·编程语言
帽儿山的枪手10 天前
什么是字节流?
c语言·go·编程语言
楽码10 天前
一文看懂隐藏功能!语言的逃逸分析
后端·go·编程语言
神经星星10 天前
【TVM教程】microTVM TFLite 指南
人工智能·机器学习·编程语言
马可奥勒留10 天前
mojo🔥学习笔记——变量
编程语言