木子呢 发表于 2021-5-13 17:07:28

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

本帖最后由 木子呢 于 2021-11-9 16:47 编辑

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


教程目录:

Python编程入门系列课程——01 智能绘星
Python编程入门系列课程——02 模拟星空
Python编程入门系列课程——03 龟龟赛跑
Python编程入门系列课程——04 小海龟走迷宫
Python编程入门系列课程——05飞机大战小游戏
Python编程入门系列课程——06飞机大战彩蛋版


一、学习背景

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

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

知识目标:1、理解面向对象、类、实例、继承的含义2、掌握创建类以及创建类的实例对象的方法3、掌握创建__init__方法以及调用父类的__init__()方法
技能目标:1、掌握使用tkinter库创建窗口的方法2、掌握使用tkinter库创建透明可拖动悬浮便签小挂件的方法3、掌握使用tkinter库固定小挂件并添加退出按钮的方法

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

四、学习实践在本项目中,我们将创建三个由浅入深的python程序,并在最终实现将带有文字的悬浮小挂件固定在电脑桌面上。1.创建一个可拖动的透明悬浮小挂件2.在小挂件上添加文字3.固定小挂件并添加退出按钮
任务1:创建挂件程序设计
在这个程序中,我们将创建一个透明的悬浮小窗口。通过它,我们可以了解通过tkinter库创建窗口并设置窗口各个属性的方式。为此,我们将分三步创建这个程序。首先是分析任务,之后进行程序的编写,最后运行程序并观察效果。
1、任务分析
在这个任务中,我们首先需要创建一个窗口对象作为挂件。为了能使小挂件在桌面上呈现半透明,我们需要为窗口对象设置其透明度。同时,为了保证无论在桌面上打开多少界面,小挂件都能呈现在我们眼前,我们需要将挂件窗口设置在顶层。整体上我们按照顺序结构的方式编写程序,具体流程如下,
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:下图中背景色为电脑桌面内容)






任务2:添加文字程序设计
在这个程序中,我们将在悬浮的桌面小挂件上书写文字,实现便签的效果。通过它,我们可以了解如何通过tkinter库在窗口上书写文字。为此,我们依旧将分三步创建这个程序。首先是分析任务,之后进行程序的编写,最后运行程序并观察效果。
1、任务分析
我们知道使用turtle库时,可以通过小海龟的移动来书写文字,这是在画布上实现的。事实上,对于tkinter库创建的窗口对象,我们依然可以借助于画布书写文字,只是,这个画布需要我们手动创建。 在这个任务中,我们首先还是创建一个窗口对象。接下来,为了书写文字,我们在窗口中创建并安置一个画布组件。之后我们能在画布上书写具体的文字内容作为备忘录。最后保持窗口的更新并循环显示窗口。       整体上我们依旧按照顺序结构的方式编写程序,具体流程如下,



在上个任务中,对于窗口对象,我们是通过tkinter库中的Tk()函数直接创建的。事实上,我们也可以通过其他方式实现。这里,我们首先创建一个窗口类,之后通过实例化类的方式来创建窗口对象,同时,我们在创建类时创建一个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.wm_attributes("-alpha", 0.5)#设置透明度      self.wm_attributes("-topmost", True)#设置窗口永远处于顶层      window = DragWindow()#创建窗口类的实例对象#创建一个宽和高为300*300的画布界面,背景色为浅蓝色,边框为厚度为0canvas=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:下图中背景色为电脑桌面内容)



任务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的画布界面,背景色为浅蓝色,边框为厚度为0canvas=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”退出后,小挂件消失。


五、巩固提高项目回顾

本节课我们利用图形用户界面(GUI)中的tkinter库,创建了一个透明悬浮的小挂件,之后在小挂件上添加Canvas画布组件并在画布上书写文字,最后将小挂件固定并添加退出按钮。
知识小结
程序Python知识点
创建挂件程序设计无
添加文字程序设计面向对象、类、实例、继承、创建类、创建类的实例对象、
创建__init__方法、调用父类的__init__()方法
固定挂件程序设计无

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



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

我按照教程中任务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')的宽和高是如何打出来的,运行时提示错误。手动输入。在网站复制过去,可以运行,不知什么原因

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,不是乘法符号{:5_122:}

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

mind+真厉害
页: [1]
查看完整版本: Mind+Python编程入门系列课程 — 07桌面小挂件