用Python写一个朴素的长度单位转换器

一直想写个简单的GUI练习一下,于是参考(参考1,参考2)写了一个很朴素的长度单位转换器。朴素,所以对整个过程理解起来比较容易。本次练习使用的是tkinter模块。

预期效果:


image.png

Python3代码:

# UnitsExchange1.0

from tkinter import *    # 这样导入,类似 tkinter.Tk() 这种形式就可以简化为 Tk()

#### 定义换算函数 ####
def calculate(*args):
    try:
    # 异常处理
        # 通过此处,使用value将meters和cm链接起来,使得meters变量随着cm变量变化而变化
        value = float(cm.get())     # 获取输入
        meters.set((value/100.0))   # 进行换算
    except ValueError:
        pass

#### 创建主窗口 ####
root = Tk()
root.title('Units Exchange')

####
# 在使用界面编程的时候,有些时候是需要跟踪变量的值的变化,以保证值的变更随时可以显示在界面上。
# 此处通过StringVar实现,他的函数有set(),get()等。 
cm = StringVar()          # 定义一个cm全局变量
meters = StringVar()    


cm_entry = Entry(root,textvariable=cm)             # 创建输入框
cm_entry.grid(column=2,row=1)    # 放置在2列,1行

# 将meters的结果呈现(由于链接到了cm,其值在调用calculate函数后会随着cm变化)
Label(root,textvariable=meters).grid(column=2,row=2)

# 创建一个“换算”按钮
Button(root,text='换算',command=calculate).grid(column=3,row=3)

# 创建静态文本部件
Label(root, text="cm").grid(column=3, row=1)
Label(root, text="is equivalent to").grid(column=1, row=2)
Label(root, text="meters").grid(column=3, row=2)

# 如果用户按下回车键,和点击换算按钮一样,启动换算
root.bind('', calculate)

root.mainloop()    # 进入消息循环(必须部件)

运行测试(为了使代码简洁,界面很朴素):


image.png

在上面基础上更进一步,不仅仅是厘米转换为米,想要有更多选择,于是将UnitsExchange1.0改写为UnitsExchange1.1版本。

1.1版本结果:

image.png

image.png

image.png

界面仍然很朴素,但可以有选择地换算常用长度单位,体现了基本过程。换算单位那一栏改为下拉列表应该效果更好,界面的布局可以使用 tkinter 的 ttk 进行优化,颜色的设置和窗口的尺寸等等。
参考3:tkinter模块常用参数(python3)

最后,使用 pyInstaller 将脚本打包成exe可执行文件就Ok了。

image.png

你可能感兴趣的:(用Python写一个朴素的长度单位转换器)