组件

★Raspberry Pi 3主板*1

★树莓派电源*1

★40P软排线*1

★L298N扩展板模块*1

★智能小车底板模块*1

★减速电机和车轮*4

★面包板*1

★跳线若干

实验原理

falcon python 树莓派 树莓派 python ui_Python

(一)常见的图形开发界面的库

  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()

以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_控件_02

(三)创建基本窗口

#创建基本窗口    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方法,使窗体一直执行下去

以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_控件_03

那么在tkinter中又有哪些控件可以供我们使用呢?

falcon python 树莓派 树莓派 python ui_Python_04

本实验中只需要学会3种控件:标签控件来显示文字,按钮控件来控制方向,范围控件来控制油门。有点编程基础的同学几个小时就可以学会!

falcon python 树莓派 树莓派 python ui_控件_05

(四)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()

以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_Python_06

#标签里插入图片,后面我们会用到按钮里插入图片    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()

以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_控件_07

(五)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()



以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_控件_08

#为按键添加一个回调函数    #现在我们已经将按钮创建出来了,那么当按钮按下去之后我们需要做些什么呢?这就需要设置command属性,添加回调函数了    import tkinter as tk    window = tk.Tk()    window.title("button")    window.geometry("300x180")    def danji():        #这个就是我们写的一个方法,下面由按钮进行调用        print('hello')    #当按键按下时,打印‘hello’    tk.Button(window,width=20,height=2,text='单击',command=danji).pack()    #注意,在设置command属性的时候,回调函数是不加'()'的,我们一般调用方法是需要,但这里就是设置属性,不需要添加    window.mainloop()

以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_控件_09

#在按键中放置图片    #有些时候我们需要将界面做的更漂亮一点,我们可以像label一样,用图片来美化我们的按钮    import tkinter as tk    window = tk.Tk()    photo = tk.PhotoImage(file='./up.png')    tk.Button(window, text='botton', compound='bottom', image=photo).pack()    tk.Button(window, text='top', compound='top', bitmap='error').pack()    #设置的相关属性和Label类似,故这里就不做赘述了    window.mainloop()
    #在按键中放置图片
    #有些时候我们需要将界面做的更漂亮一点,我们可以像label一样,用图片来美化我们的按钮
    import tkinter as tk
    window = tk.Tk()
    photo = tk.PhotoImage(file='./up.png')
    tk.Button(window, text='botton', compound='bottom', image=photo).pack()
    tk.Button(window, text='top', compound='top', bitmap='error').pack()
    #设置的相关属性和Label类似,故这里就不做赘述了
    window.mainloop()





以上代码执行结果如下图:




falcon python 树莓派 树莓派 python ui_控件_10

(六)Scale滑动条的使用

#比如Windows下的音量控制,音乐或者视频的进度控制,    #都是用滑动条来实现的,本实验中用来控制油门    from tkinter import *    window = Tk()    Scale(window,label='accelerator',   #设置显示的标签          from_=0,to=100,          # 设置最大最小值          #注意设置最大值的属性不是'from',而是'from_',这是因为python中已经有了from关键字啦          resolution=1,          # 设置步距值          orient=HORIZONTAL,      # 设置水平方向          #如果我们想设置成垂直方向改怎么办呢?直接缺省这个属性就可以啦,默认就是垂直哒          ).pack()    window.mainloop()



以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_控件_11

#绑定Scale的值为我们所用    from tkinter import *    window = Tk()    value = StringVar()    def s_print(text):        #注意,Scale的回调函数需要给定形参,当触发时会将Scale的值传给函数        print(value.get())        print(text)            #两者同样的效果    Scale(window,label='accelerator',          from_=0,to=100,          resolution=1,show=0,          variable=value,command=s_print          ).pack()    window.mainloop()



以上代码执行结果如下图:

falcon python 树莓派 树莓派 python ui_falcon python 树莓派_12

(七)控件的定位

通过前面的文档我们已经知道Tkinter控件的简单使用,想要拥有一个简洁、合理的界面,控件布局就显得尤为重要了,而Tkinter提供了三种布局方式给我们。
1.pack是一种相对布局方式,指定控件的相对位置,精确位置会由系统完成。

pack布局没有任何属性参数,默认会自上而下垂直并且水平居中排列。我们可以通过side=TOP/BOTTOM/LEFT/RIGHT,控制控件的相对位置(上下左右),利用fill=x来是控件和窗体一样宽,用padx、pady、ipadx、ipady控制控件的边距......



falcon python 树莓派 树莓派 python ui_Python_13