零基础python入门GUI编程:2-1 进制转换

目前我们所学的知识:

python语法:

创建函数、数学计算

常见类型:

文本与整数、浮点数的类型互相转换

GUI类型:

  • Label用于提示和输出,以及设置Label文本的方法
  • Entry用于输入,提取Entry输入的方法,
  • Button用于触发动作,将Button动作关联于函数的方法。

编程思考方式:

软件互动模式:输入,按钮,计算,输出

我们将用一个个的案例,逐步丰富我们的知识框架。从本节课的《进制转换》开始。

我们知道计算机内部使用的是二进制,一个数字在不同进位制下的表示方法不同。例如:

重点说一下进制转换的知识。

常见类型功能(int):进制转换
二进制:bin(num)
八进制:oct(num)
十六进制:hex(num)
这三个函数,输入均为整数(int),输出均为字符串。

看了第2节教程的朋友,如果学过初中数学,能够理解行列坐标,即使以前没有接触过编程,也能够比较容易地设计出页面的布局。

我们这里扩展两个GUI类型的知识点:
GUI类型功能(通用)
1、匿名组件
如果我们不打算在程序中访问一个组件,则无须为其命名。
可以在创建后直接布局,一句代码完整一个组件的创建:
Label(root, text="十进制:").grid(column=1, row=1)
2、组件的颜色
组件有两个颜色属性:

  • 前景色(foreground或fg)
  • 背景色(background或bg)

颜色值的表示方法,也有两种:RGB值法与颜色名法。

  • RGB值法:#开头的6位16进制,红、绿、蓝色的成分各占两位,从00到FF
  • 颜色名法:英语的颜色名,比如orage, yellow, pink,等等

配色的位置,也有两种方法。

  • 一种是在创建时(主窗口背景色不能用此法):Label(root, text="二进制:", bg='#00ffff').grid(column=1, row=2)
  • 一种是在创建后:lbBin= Label(root, fg='orange')
# 参考资料,本课程中所有的GUI程序,都必须有这一句话
from tkinter import *

# 函数定义语句,定义了计算过程
def calculate():
    # get方法获得的对象是文本类型,必须转换为整数类型(int)才能用于进制转换
    value = int(entry.get())
    # 给标签的显示内容(text)属性赋值
    # 三个函数,分别转换为二进制(0b开头)、八进制(0o开头)、十六进制(0x开头)
    lbBin['text']= bin(value)
    lbOct['text']= oct(value)
    lbHex['text']= hex(value)

# root 是主窗口
root = Tk()
# 设置主窗口颜色只能在创建之后
root['bg']= 'pink'

# 给主窗口定一个标题
root.title("进制转换")


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

# 纯提示用的标签(类型Label),属于root窗口,不必起名字,定义后直接布局
# 背景色属性:bg
# 颜色设置方法1:#RBG的值
Label(root, text="二进制:", bg='#00ffff').grid(column=1, row=2)
# 二进制输出用的标签(类型Label),属于root窗口
# 前景色属性:fg
# 颜色设置方法2:颜色名
lbBin= Label(root, fg='orange')
lbBin.grid(column=2, row=2)

# 纯提示用的标签(类型Label),属于root窗口,不必起名字,定义后直接布局
Label(root, text="八进制:").grid(column=1, row=3)
# 八进制输出用的标签(类型Label),属于root窗口
lbOct= Label(root)
# 有名字的组件,可以在创建之后再添加颜色
lbOct['bg']='pink'
lbOct.grid(column=2, row=3)

# 纯提示用的标签(类型Label),属于root窗口,不必起名字,定义后直接布局
# 前景色可以直接使用全称foreground
Label(root, text="十六进制:", foreground="#ff7f00").grid(column=1, row=4)
# 十六进制输出用的标签(类型Label),属于root窗口
# 背景色也可以直接使用全称background
lbHex= Label(root, background='#d0d0d0')
lbHex.grid(column=2, row=4)

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


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

小结

1、整数转化为任意进制的方法
2、创建组件的简化方法
3、组件的颜色设置方法

本节作业

1、在进制转换软件中,不做输入,直接按计算按钮,看看出现什么效果
2、设计一个圆形面积计算器,输入半径,计算面积

资料:各种可用的颜色

猜你喜欢

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