11115浏览
查看: 11115|回复: 7

[教程] Mind+Python编程入门系列课程 — 07桌面小挂件

[复制链接]
本帖最后由 木子呢 于 2021-11-9 16:47 编辑

Mind+Python编程入门系列课程——第七课 桌面小挂件



教程目录:










一、学习背景

经过前面两个单元的学习,我们已经掌握了常见的python基础知识,同时,也学会了turtle库的使用,通过turtle库,我们能绘制有趣的图形,创建屏幕窗口,制作小游戏等。为了让我们的小作品更加丰富多彩,在本单元中,我们将引入专业的图形用户界面设计(GUI)中的tkinter库,通过它来创作更加实用更有趣的作品,让我们来体验一下吧!

Mind+Python编程入门系列课程 — 07桌面小挂件图1

二、学习目标
本实践项目通过编写python程序来设计一个电脑桌面上的透明小挂件。

Mind+Python编程入门系列课程 — 07桌面小挂件图2

知识目标:
1、理解面向对象、类、实例、继承的含义
2、掌握创建类以及创建类的实例对象的方法
3、掌握创建__init__方法以及调用父类的__init__()方法

技能目标:
1、掌握使用tkinter库创建窗口的方法
2、掌握使用tkinter库创建透明可拖动悬浮便签小挂件的方法
3、掌握使用tkinter库固定小挂件并添加退出按钮的方法


三、学习准备
1、电脑
2、mind+编程软件


四、学习实践
在本项目中,我们将创建三个由浅入深的python程序,并在最终实现将带有文字的悬浮小挂件固定在电脑桌面上。
1.创建一个可拖动的透明悬浮小挂件
2.在小挂件上添加文字
3.固定小挂件并添加退出按钮

任务1:创建挂件程序设计
在这个程序中,我们将创建一个透明的悬浮小窗口。通过它,我们可以了解通过tkinter库创建窗口并设置窗口各个属性的方式。为此,我们将分三步创建这个程序。首先是分析任务,之后进行程序的编写,最后运行程序并观察效果。

1、任务分析
在这个任务中,我们首先需要创建一个窗口对象作为挂件。为了能使小挂件在桌面上呈现半透明,我们需要为窗口对象设置其透明度。同时,为了保证无论在桌面上打开多少界面,小挂件都能呈现在我们眼前,我们需要将挂件窗口设置在顶层。
整体上我们按照顺序结构的方式编写程序,具体流程如下,

Mind+Python编程入门系列课程 — 07桌面小挂件图3
2、程序编写
在正式编写程序代码之前,我们首先要创建一个项目文件及python程序文件。
STEP1:创建与保存项目文件
启动Mind+,另存项目并命名为“桌面小挂件”。
STEP2:创建与保存python文件
创建一个python程序文件“任务一.py”,双击打开。
STEP3:编写程序

import tkinter#导入tkinter库
window = tkinter.Tk()#创建窗口对象
window.title('桌面小挂件')#设置窗口的标题
window.geometry('300x300')#设置窗口的宽和高
window.resizable(width=False, height=False)#设置窗口的宽和高是否可变
window.wm_attributes("-alpha", 0.7)#设置窗口透明度
window.wm_attributes("-topmost", True)#设置窗口永远处于顶层
window.update()#新界面
window.mainloop()#进入循环

3、程序运行
运行程序,我们看到:弹出了一个标题为桌面小挂件”的透明小窗口。无论我们在电脑桌面上打开多少个不同的界面,这个小挂件窗口始终悬浮并显示在我们的屏幕上而不会被其余窗口遮挡。我们可通过拖动窗口上方的灰色部分任意更换其位置。(Tips:下图中背景色为电脑桌面内容)

Mind+Python编程入门系列课程 — 07桌面小挂件图4

Mind+Python编程入门系列课程 — 07桌面小挂件图25
Mind+Python编程入门系列课程 — 07桌面小挂件图26
Mind+Python编程入门系列课程 — 07桌面小挂件图27
Mind+Python编程入门系列课程 — 07桌面小挂件图28
Mind+Python编程入门系列课程 — 07桌面小挂件图29


任务2添加文字程序设计
在这个程序中,我们将在悬浮的桌面小挂件上书写文字,实现便签的效果。通过它,我们可以了解如何通过tkinter库在窗口上书写文字。为此,我们依旧将分三步创建这个程序。首先是分析任务,之后进行程序的编写,最后运行程序并观察效果。

1、任务分析
我们知道使用turtle库时,可以通过小海龟的移动来书写文字,这是在画布上实现的。事实上,对于tkinter库创建的窗口对象,我们依然可以借助于画布书写文字,只是,这个画布需要我们手动创建。
在这个任务中,我们首先还是创建一个窗口对象。接下来,为了书写文字,我们在窗口中创建并安置一个画布组件。之后我们能在画布上书写具体的文字内容作为备忘录。最后保持窗口的更新并循环显示窗口。
      整体上我们依旧按照顺序结构的方式编写程序,具体流程如下,

Mind+Python编程入门系列课程 — 07桌面小挂件图5


在上个任务中,对于窗口对象,我们是通过tkinter库中的Tk()函数直接创建的。事实上,我们也可以通过其他方式实现。这里,我们首先创建一个窗口类,之后通过实例化类的方式来创建窗口对象,同时,我们在创建类时创建一个init方法,用来为后续的窗口对象确定其属性特征,具体流程如下,

Mind+Python编程入门系列课程 — 07桌面小挂件图6

2、程序编写
STEP1:创建与保存python文件
新建一个python程序文件“任务二.py”,双击打开。

STEP2:编写程序

import tkinter #导入tkinter库
class DragWindow(tkinter.Tk):#创建窗口类
    def __init__(self):#创建init实例方法(相当于构造方法)
        super().__init__()#继承父类的__init__方法
        self.title('桌面小挂件')#设置窗口标题为透明小挂件
        self.geometry('300x300')#设置窗口的宽和高
        self.resizable(width=False, height=False)#设置窗口的宽和高是否可变
        self.wm_attributes("-alpha", 0.5)#设置透明度
        self.wm_attributes("-topmost", True)#设置窗口永远处于顶层
        
window = DragWindow()#创建窗口类的实例对象
#创建一个宽和高为300*300的画布界面,背景色为浅蓝色,边框为厚度为0
canvas=tkinter.Canvas(window,width=300,height=280,highlightthickness=0,bg='light green')
canvas.pack()#通知窗口管理器注册组件并安置
text=canvas.create_text(150,50,text='2011.11.11',font=('Times',16))#画布上书写文字
text=canvas.create_text(150,150,text='今天有雨,出门记得带伞',font=('Times',16))
window.update()#更新界面
window.mainloop()#循环
3、程序运行
运行程序,我们看到:弹出了一个标题为桌面小挂件”的透明浅绿色背景的窗口。在窗口上记录这日期“2011.11.11”及备忘语录“今天有雨,出门记得带伞哦”。同样的,无论我们在电脑桌面上打开多少个不同的界面,这个小挂件窗口始终悬浮并显示在我们的屏幕上而不会被其余窗口遮挡。我们可通过拖动窗口上方的灰色部分任意更换其位置。(Tips:下图中背景色为电脑桌面内容)

Mind+Python编程入门系列课程 — 07桌面小挂件图7

Mind+Python编程入门系列课程 — 07桌面小挂件图8
Mind+Python编程入门系列课程 — 07桌面小挂件图9
Mind+Python编程入门系列课程 — 07桌面小挂件图10
Mind+Python编程入门系列课程 — 07桌面小挂件图11
Mind+Python编程入门系列课程 — 07桌面小挂件图12
Mind+Python编程入门系列课程 — 07桌面小挂件图13
Mind+Python编程入门系列课程 — 07桌面小挂件图14
Mind+Python编程入门系列课程 — 07桌面小挂件图15
Mind+Python编程入门系列课程 — 07桌面小挂件图16
Mind+Python编程入门系列课程 — 07桌面小挂件图17
Mind+Python编程入门系列课程 — 07桌面小挂件图18
Mind+Python编程入门系列课程 — 07桌面小挂件图19
Mind+Python编程入门系列课程 — 07桌面小挂件图20
Mind+Python编程入门系列课程 — 07桌面小挂件图21

任务3:固定挂件程序设计
在这个程序中,我们将使可拖动的小挂件固定下来,并为其添加退出按钮。通过它,我们可以了解借助tkinter库在窗口上创建按钮交互的方式。为此,我们依旧将分三步创建这个程序。首先是分析任务,之后进行程序的编写,最后运行程序并观察效果。

1任务分析
在这个任务中,我们整体编程的方式不变。为了实现固定小挂件的效果,我们可以通过在创建“_init_”方法时,在设置完窗口对象的不可拉伸性后再添加一条不可拖动性。而为了实现按压按钮退出的效果,我们可以在书写完备忘录后为窗口添加按钮组件。

2、程序编写
STEP1:创建与保存python文件
新建一个python程序文件“任务三.py”,双击打开。

STEP2:编写程

import tkinter #导入tkinter库
class DragWindow(tkinter.Tk):#创建窗口类
    def __init__(self):#创建init实例方法(相当于构造方法)
        super().__init__()#继承父类的__init__方法
        self.title('桌面小挂件')#设置窗口标题为透明小挂件
        self.geometry('300x300')#设置窗口的宽和高
        self.resizable(width=False, height=False)#设置窗口的宽和高是否可变
        self.overrideredirect(True)#设置窗口不可拖动
        self.wm_attributes("-alpha", 0.5)#设置透明度
        self.wm_attributes("-topmost", True)#设置窗口永远处于顶层
window = DragWindow()#创建窗口类的实例对象
#创建一个宽和高为300*300的画布界面,背景色为浅蓝色,边框为厚度为0
canvas=tkinter.Canvas(window,width=300,height=280,highlightthickness=0,bg='light green')
canvas.pack()#通知窗口管理器注册组件并安置
text=canvas.create_text(150,50,text='2011.11.11',font=('Times',16))#画布上书写文字
text=canvas.create_text(150,150,text='今天有雨,出门记得带伞',font=('Times',16))
tkinter.Button(window, text="Exit", command=window.quit).pack(side=tkinter.BOTTOM)#创建关闭窗口按钮
window.update()#更新界面
window.mainloop()#循环

3、程序运行
运行程序,我们看到:标题为桌面小挂件”的透明浅绿色背景的窗口被固定在了电脑上,此时小挂件不再可被拖动,同时窗口下方显示出一个“Exit”按钮,点击“Exit”退出后,小挂件消失。

Mind+Python编程入门系列课程 — 07桌面小挂件图22

Mind+Python编程入门系列课程 — 07桌面小挂件图23
Mind+Python编程入门系列课程 — 07桌面小挂件图24

五、巩固提高
项目回顾

本节课我们利用图形用户界面(GUI)中的tkinter库,创建了一个透明悬浮的小挂件,之后在小挂件上添加Canvas画布组件并在画布上书写文字,最后将小挂件固定并添加退出按钮。

知识小结
程序
Python知识点
创建挂件程序设计
添加文字程序设计
面向对象、类、实例、继承、创建类、创建类的实例对象、
创建__init__方法、调用父类的__init__()方法
固定挂件程序设计

项目拓展
让我们利用今天所学的python知识及创建桌面小挂件的方式,尝试改变窗口的透明度等属性,改变画布的背景色、书写其他文字试试效果吧!




ThuMay-202105131055..png

glwz007  初级技匠

发表于 2021-8-25 10:21:40

我按照教程中任务1的代码,运行程序为什么不会出现挂件窗口呢?Mind+Python编程入门系列课程 — 07桌面小挂件图1
回复

使用道具 举报

木子呢  管理员
 楼主|

发表于 2021-8-25 14:06:55

glwz007 发表于 2021-8-25 10:21
我按照教程中任务1的代码,运行程序为什么不会出现挂件窗口呢?

尝试一下重启mind+,然后复制程序,再运行试一下吧
回复

使用道具 举报

glwz007  初级技匠

发表于 2021-8-25 15:12:53

谢谢,当时做完后关机了,现在重启后再次运行,正常了。
回复

使用道具 举报

树上的蜗牛  学徒

发表于 2023-6-11 23:40:55

请问geometry('300×300')的宽和高是如何打出来的,运行时提示错误。手动输入。在网站复制过去,可以运行,不知什么原因
SunJune-202306112615..png
回复

使用道具 举报

DFEDU  高级技师

发表于 2023-6-12 11:57:34

树上的蜗牛 发表于 2023-6-11 23:40
请问geometry('300×300')的宽和高是如何打出来的,运行时提示错误。手动输入。在网站复制过去,可以运行, ...

英文输入法打的
回复

使用道具 举报

树上的蜗牛  学徒

发表于 2023-6-12 21:35:26

DFEDU 发表于 2023-6-12 11:57
英文输入法打的

汗,原是英文输入法的x,不是乘法符号
回复

使用道具 举报

Amos Young  中级技师

发表于 2023-8-11 16:24:06

mind+真厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail