零基础python入门GUI编程:2-2 智能的基础


目前我们所学的知识:

python语法:

创建函数(1-2,2-1)

数学计算(1-2,2-1)

常见类型:

文本与整数、浮点数的类型互相转换(1-2)

整数:进制转换(2-1)

GUI模型:

  • 组件

组件颜色(2-2)

  • 几何

行列布局法(1-2)

  • 事件

GUI类型:

  • 窗口(Tk):主窗口(1-1)
  • 标签(Label):用于提示和输出,以及设置Label文本的方法(1-2)
  • 文本输入(Entry):用于输入,提取Entry输入的方法(1-2)
  • 按钮(Button)用于触发动作,将Button动作关联于函数的方法(1-2)

编程思考方式:

软件互动模式:输入,按钮,计算,输出(1-2,2-1)

为了让读者养成随时总结和整理的习惯,本教程在每节课前会把现有的知识框架整理出来,方便读者学习。

智能的基础,是根据不同的情况做出不同的处理。


在python中,分支判断语句,是实现这一功能的基础。

if 条件:
    满足条件执行的语句
else:
    不满足条件执行的语句

注意,if 条件后面跟一个半角冒号结束。后面跟的语句,应当比if语句再缩进4个空格。如果有多条语句,每条都应该同等地缩进4个空格。else后面也以半角冒号结束,后面的语句也必须同样缩进。
这种用法,与我们前面见过的def函数定义语句是类似的

举例来说,我们判断一个整数num是否是偶数,就看它除以2的余数是否为0
这个条件怎么表达呢?
num%2==0
在这里:%代表除法取余数,==(注意是两个等号)代表判断相等
不等于则是!=(叹号等于)

我们现在写一个例程,输入一个数,判断它是不是整数。
我们规定,偶数亮一盏绿灯,非偶数亮一盏红灯。

在这里仍然使用Label作为输出组件,但不是用文本,而是用颜色。
实现方法:

def calculate():
    # get方法获得的对象是文本类型,必须转换为整数类型(int)才能用于进制转换
    value = int(entry.get())
    # 用修改颜色的方法来表示输出
    if value % 2 == 0:
        lbMark['bg']= 'green'
    else:
        lbMark['bg']= 'red'

在初步了解了GUI编程之后,我们对这种默认的拥挤的布局是感到逐渐适应了?还是感到难以忍受了?
其实我们有更多的选择,在进行几何布局时,我们可以选择在上下左右加上留白。
效果如下:

具体做法是在grid方法中增加两个参数:padx和pady
lbMark.grid(column=2, row=2, padx=10, pady= 10)
它们的值是像素,所以,padx=10的意思就左右各留10个像素,pady=10的意思是上下各留10个像素

完整源代码如下:

# 本课程中所有的GUI程序,都必须有这一句话
from tkinter import *

# 函数定义语句,定义了计算过程
def calculate():
    # get方法获得的对象是文本类型,必须转换为整数类型(int)才能用于进制转换
    value = int(entry.get())
    # 用修改颜色的方法来表示输出
    if value % 2 == 0:
        lbMark['bg']= 'green'
    else:
        lbMark['bg']= 'red'


# root 是主窗口
root = Tk()

# 给主窗口定一个标题
root.title("偶数检测器")


# 纯提示用的标签(类型Label),属于root窗口,不必起名字,定义后直接布局
Label(root, text="请输入一个数字:").grid(column=1, row=1, padx=10, pady= 10)
# 输入数字,单行文本输入框(类型Entry),它属于root窗口
entry = Entry(root)
entry.grid(column=2, row=1, padx=10, pady= 10)

# 输出用的标签(类型Label),属于root窗口
# 标记留白,通过改变整个Label的背景色来实现分类输出
lbMark= Label(root, text="    ")
lbMark.grid(column=2, row=2, padx=10, pady= 10)

# 按钮(类型Button),属于root窗口,显示文字是“检测”,按下去动作(command)是函数calculate
# 无须起名,因为后面不用访问按钮本身
Button(root, text="检测", command=calculate).grid(column=1, row=2, padx=10, pady= 10)


# 这一句是运行窗口
root.mainloop()


小结

  • 1、分支判断语句的用法
  • 2、偶数的判断法
  • 3、组件留白的方法

本节作业

1、仿例题制作一个《正数判断器》
2、除了可以进行数字比较,文本同样可以做比较。
仿照例题,做一个《诗词连句》软件。

资料:比较表达式

本节出现的比较是等于(==)
两个对象的比较,一共可以有六种关系,分别是:

  1. 等于(==)
  2. 不等于(!=)
  3. 小于(<)
  4. 大于等于(>=)
  5. 大于(>)
  6. 小于等于(<=)
     

猜你喜欢

转载自blog.csdn.net/xiaorang/article/details/105702718