一、介绍
树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库——Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制小车的前进后退、转向和原地转圈。
Tkinter是Python的标准GUI库,Python使用Tkinter可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。
其它基础内容会在文集:树莓派基础实验当中讲解。
二、组件
★Raspberry Pi 3主板*1
★树莓派电源*1
★40P软排线*1
★L298N扩展板模块*1
★智能小车底板模块*1
★减速电机和车轮*4
★面包板*1
★跳线若干
三、实验原理
扩展板供电接法
(一)常见的图形开发界面的库
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下:
Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。
PyQt:PyQt 是 Python 编程语言和 Qt 库的成功融合。Qt 本身是一个扩展的 C++ GUI 应用开发框架,Qt 可以在 UNIX、Windows 和 Mac OS X 上完美运行,因此 PyQt 是建立在 Qt 基础上的 Python 包装。所以 PyQt 也能跨平台使用。
(二)tk初始
注意:Python3.x 版本使用的库名为 tkinter,即首写字母 T 为小写。
import tkinter
创建一个GUI程序
1、导入 Tkinter 模块
2、创建控件
3、指定这个控件的 master, 即这个控件属于哪一个
4、告诉 GM(geometry manager) 有一个控件产生了。
实例(Python3.x):
#!/usr/bin/python3
import tkinter
top = tkinter.Tk()
# 进入消息循环
top.mainloop()
实例(Python2.x):
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import Tkinter
top = Tkinter.Tk()
# 进入消息循环
top.mainloop()
以上代码执行结果如下图:
(三)创建基本窗口
#创建基本窗口
import tkinter as tk # 将tkinter导入到工程中
window = tk.Tk() # 创建窗体对象
window.title('musicplay') # 设置窗口标题
window.geometry('380x390') # 设置窗口大小,注意这里的x是英文字母x
#如果需要规定窗体打开的位置,可以在在380x390后面加上“+10+10”,
# 即横坐标为10,纵坐标为10 的位置
window.resizable(0,0) # 如果不想人为修改窗体的大小,可以加上这个
#window.iconbitmap('./logo.ico') # 设置窗体图标
#window.withdraw() # 隐藏窗口
#window.deiconify() # 显示窗口
window.mainloop() # 调用mainloop方法,使窗体一直执行下去
以上代码执行结果如下图:
那么在tkinter中又有哪些控件可以供我们使用呢?
tkinter控件表
本实验中只需要学会3种控件:标签控件来显示文字,按钮控件来控制方向,范围控件来控制油门。有点编程基础的同学几个小时就可以学会!
图形界面
(四)Label标签的使用
#设置标签的大小和字体
import tkinter as tk
window = tk.Tk()
window.title('Label的使用')
window.geometry('400x400')
label = tk.Label(window,text='我是一个标签', #text为显示的文本内容
bg='black',fg='white', #bg为背景色,fg为前景色
font=("华文行楷", 20), #设置字体为“华文行楷”,大小为20
width=20,height=3) #width为标签的宽,height为高
label.pack()
window.mainloop()
以上代码执行结果如下图:
label
#标签里插入图片,后面我们会用到按钮里插入图片
import tkinter as tk
window = tk.Tk()
window.title('Label的使用')
window.geometry('400x400')
photo = tk.PhotoImage(file='./up.png') #将图片加载到窗口中
#注意加载进来的图片只支持‘.gif’格式的图片,如果是其他格式的文件可以用其他工具转换一下,如PS、画图等
label2 = tk.Label(window,text='我是文字',
image=photo,
compound='center') #compound参数是指图片和文字之间的关系
label.pack()
'''
anchor可用的值:
left: 图像居左
right: 图像居右
top: 图像居上
bottom: 图像居下
center: 文字覆盖在图像上
'''
window.mainloop()
以上代码执行结果如下图:
label_grahic
(五)Button按键的使用
#创建一个按钮
#我们先创建一个宽20,长2,显示文字为‘单击’的按钮练练手
import tkinter as tk
window = tk.Tk()
window.title("button")
window.geometry("300x180")
tk.Button(window,width=20,height=2,text='单击').pack()
#如果后面我们需要对这个空间的属性进行修改,或者进行信息的获取,我们可以不指定对象,按键功能我们可以通过command参数实现
window.mainloop()
以上代码执行结果如下图: