销售新网站推广策略,南通网站建设公司,网页小游戏怎么下载,wordpress 同步微信文章我们在上一次课程中(python窗口编程-2#xff1a;风格与布局 )#xff0c;制作了完整的计算器窗口界面#xff0c;只是那个窗口没有真正的功能#xff0c;是点击任何按钮都会关闭。这一次#xff0c;我们加入一些事件处理的功能#xff0c;让它成为一个正常工作的窗口程序…我们在上一次课程中(python窗口编程-2风格与布局 )制作了完整的计算器窗口界面只是那个窗口没有真正的功能是点击任何按钮都会关闭。这一次我们加入一些事件处理的功能让它成为一个正常工作的窗口程序并具备与普通的计算器一样的输入数字的操作能力。事件处理的无限循环为了避免点击按钮会关闭窗口我们引入无限循环的事件处理while True: event, values window.read() if eventsg.WIN_CLOSED: breakwindow.close()使用这个代码替换上次课程最后的两行代码。我们会看到现在只有点击窗口右上角的“X”才能关闭窗口点击其它的按钮虽然没有反应但不会导致窗口的关闭了。sg.WIN_CLOSED代表关闭窗口的按钮值实际是None但这样表达增强了代码的健壮性。如果有一天PySimpleGUI的新升级版决定修改关闭窗口的按钮值我们的代码无须做任何修改(理应如此)。凡是有无限循环的地方都必须有退出循环的机制否则程序无法终止。那将是一个很不友善的用户体验。这里的break语句作用就是退出循环。break不但用于while循环也可以用于for循环。当遍历搜索一个数据时找到数据并且无须继续搜索时就可以用break退出循环。数字键的处理当按钮为数字的时候我们这样表示event in [str(i) for i in range(0,10)]:这里又用到了列表生成式我们在编程基础的课程中讲过(python语言基础-10编程是一种艺术 )含义是当事件为‘0’到‘9’几个数字的时候。需求分析很多软件产品的开发并没有细致的需求描述而是提供了一个参考原型。即这个功能参考XXX进行开发。比如我们的计算器按下按钮的反应究竟应该是怎样来自对真实计算器的模拟。我们第一步的需求只实现正常的数字输入功能。计算器的操作对很多朋友来说是很熟悉也很自然的。最好的操作界面设计就应该是自然的让用户无须培训就能自然使用。我们用语言来描述一下。计算器的输出框永远不会是空白它的默认状态就是一个0后面跟一个小数点。输入数字就开始增加整数的位数但首位不会是0。输入小数点显示不会立刻改变但后面再输入数字就变成了小数的位末尾可以是0。本节课程只实现前两个功能(的一部分)。整数数位逻辑为了实现功能2让我们看一下基本的整数位逻辑。新输入的数字会改变原有数字的含义。新的数字占据个位原来的个位变成十位原来十位变成百位依此类推。这个操作在编程中用一个简单的模式来表现Value Value* 10 NewDigit程序语言真的是一种语言一句代码就能把这个操作逻辑描述得清清楚楚。能够看懂并理解程序语言这就是掌握编程的开始。内部值与显示值的分离我们注意到计算器的显示是数字后面跟着一个小数点。正常的数字转字符串不是这样的效果我们必须人为地在后面添加一个小数点。ShowStr str(Value).在这种操作逻辑下将内部计算用的值与显示的效果分开是好的。它的好处体现在控制了复杂性的规模。编程活动不创造有形的物质它的价值就在于控制复杂性。更加明确的说好的编程者的能力就体现在开发代码的全过程中始终把复杂性规模维持在自己能够控制的范围之内并以此实现整体看起来相当复杂的功能逻辑。(这里对比一下交易的价值就在于控制风险。优秀的交易者能够把交易风险限制在自己能够控制的范围之内并以此为基础承担一般人整体看起来相当大的风险从而获得风险利益。)控制复杂性规模的一个方法就是将可以分开的功能尽量分开。我们可以集中注意力思考如何通过按钮事件对内部值的改变时可以不考虑显示的问题。而在处理显示的时候只需集中注意力考虑它的静态状态不用考虑它的变化。(这与打仗的原理是一样的在局部集中优势兵力对敌。)最后贴一下局部实现的代码value 0while True: event, values window.read() if eventsg.WIN_CLOSED: break if event C: value 0 elif event ±: value -value elif event in [str(i) for i in range(0,10)]: value value* 10 int(event) info str(value). infoinfo[-12:] window[show].update(info)window.close()这里还有几个小的处理逻辑C按钮的处理直接将内部值设置为0±按钮的处理内部值正负切换为了美观起见数字的显示只保留最后的12位改变文本框的显示用update函数它提供了窗口界面的输出功能。文本框的定位用了它的名字(key)这里的key与前面课程中讲的key功能含义完全不同别弄混了。同名不同含义的问题在自然语言和编程语言中都大量存在这经常是引起各种混淆和争论的起因。我们从一开始就应当给予足够的重视。课程小结本节课程介绍了如何开发一个真正的窗口应用在窗口中响应输入显示输出完全脱离控制台的黑窗口。并讲了数位处理的基本逻辑这在数学编程中是很常用的。简单介绍了通过功能分离来控制编程复杂性的方法控制复杂性将是贯穿编程的学习和实践的全过程后面还会经常讲到。朋友们可以自行尝试一下如何实现小数下一次课程中再解说。