[仅界面]小白学习之python—界面化获取设置温湿度、控制图片风扇转动

发布时间:2024年01月16日

一、界面效果

二、具体代码

? ? ? ? 不要忘记包的导入

from?tkinter?import *
from tkinter.messagebox import *

import time

? ? ? ? 1、关于整体的结构设计

????????????????a:窗体的构造

from tkinter import *
from tkinter.messagebox import *

#第二个窗体(跟登录界面一起写的)

class page2:
    def __init__(self,win):

        self.limitemp=0
        self.limitshi=0
        self.nowtemp=23
        
        #self.cvar = IntVar()
        self.v3=StringVar()
        self.v4=StringVar()
        
        self.win=win
        self.win.title("温湿度显示窗体")
        self.win.geometry("500x300")
        #self.win.config(bg='blue')

?????????????????b:温度和湿度实例化

#标签实例化、定位
        self.lab1=Label(self.win,text='温  度:')
        self.lab1.place(x=100,y=50,width=50,height=30)
        self.lab2=Label(self.win,text='湿  度:')
        self.lab2.place(x=100,y=100,width=50,height=30)
#文本框实例化、定位
        self.textemp=Entry(textvariable=self.v3)
        self.textshi=Entry(textvariable=self.v4)
        self.textemp.place(x=180,y=50,width=150,height=30)
        self.textshi.place(x=180,y=100,width=150,height=30)

????????????????c:获取、重置、退出、返回按钮实例化

#获取、重置、退出按钮实例化和定位 
        self.butt1=Button(self.win,text='获取',command=self.gain)
        self.butt1.place(x=80,y=180,width=50,height=30)

        self.butt2=Button(self.win,text='设置',command=self.setup)
        self.butt2.place(x=180,y=180,width=50,height=30)

        self.butt3=Button(self.win,text='重置',command=self.reset1)
        self.butt3.place(x=280,y=180,width=50,height=30)
        
        self.buttback=Button(self.win,text='返回',command=self.back)
        self.buttback.place(x=380,y=180,width=50,height=30)

? ? ? ? ? ? ? ? d:图片导入

#图片导入
        self.photo1=PhotoImage(file="./f1.gif")
        self.fan=Label(self.win,image=self.photo1)
        self.fan.place(x=350, y=40, width=100, height=100)

        self.bm1=PhotoImage(file='./f1.gif')
        self.bm2=PhotoImage(file='./f2.gif')
        self.bm3=PhotoImage(file='./f3.gif')
        self.bm4=PhotoImage(file='./f4.gif')
        self.bm5=PhotoImage(file='./f5.gif')
        self.bm6=PhotoImage(file='./f6.gif')
        self.bm7=PhotoImage(file='./f7.gif')
        self.bm8=PhotoImage(file='./f8.gif')
        self.turn1=Label(image=self.bm1)

重点1:程序文件得与所需图片建议在同个文件夹下

self.photo1=PhotoImage(file="./f1.gif")? ? ? ? ? ? ? ? ? ? ? ? ?//文件后缀改为.png或.jpg仍适用

如果你非得,存在其他的地方,用如下方法查询路径

self.photo1=PhotoImage(file="D:\\mortal\\lelele\\f1.png")?

重点2:通过给标签背景化来达到窗口打开就有个静止的风扇的目的?

self.fan=Label(self.win,image=self.photo1)


????????2、关于功能实现的编写

? ? ? ? ? ? ? ? A:如何获取内容/风扇如何控制

#功能编写:风扇控制
    def gain(self):
        if self.nowtemp > self.limitemp:     

           self.fan.place_forget() #控件隐藏
#如何使风扇转动           
           images = [self.bm1,self.bm2,self.bm3,self.bm4,self.bm5,self.bm6]
           def imgif(id):
               global s            #全局变量
               img=images[id]
               self.turn1.config(image=img)
               id=id+1
               s=self.turn1.after(10,imgif,id%6)
               return(s)
           imgif(0)
#——————————————
           self.turn1.place(x=350,y=40,width=100,height=100)
           showinfo("提示","开启风扇")
        else:
           self.turn1.place_forget() #控件隐藏
           self.fan.place(x=350,y=40,width=100,height=100)
           showinfo("提示","关闭风扇")  
        self.v3.set('23°')          #self.textemp.insert(0,'23°')
        self.v4.set('40%')           #self.textshi.insert(0,'40%')

? ? ? ? 风扇的转动其实是一个遍历每一个图片的过程,?

?s=self.turn1.after(10,imgif,id%6)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? 这里使用了after函数,其各参数含义如下:

after(间隔时间,运行函数,函数参数)

? ? ? ? ? ? ? ? B:如何设置内容

#功能编写:设置温度
    def setup(self):        
        if self.v3.get()[-1]=='°' :
           self.limitemp =int( self.v3.get().replace("°",""))
        else:
           self.limitemp = int(self.v3.get())
        if self.v4.get()[-1]=='%' :
           self.limitshi = int(self.v4.get().replace("%",""))
        else:
           self.limitshi = int(self.v4.get())
        showinfo("提示","温度设定为"+str(self.limitemp) + "°"+","+"湿度设定为"+str(self.limitshi)+"%")
        self.v3.set(str(self.limitemp)+"°")
        self.v4.set(str(self.limitshi)+"%")

? ? ? ? ? ? ? ? C:如何重置内容

#功能编写:重置文本框
    def reset1(self):
        self.v3.set("")               #self.textemp.delete(0,END)
        self.v4.set("")               #self.textshi.delete(0,END)

? ? ? ? ? ? ? ? D:如果需返回上个窗体

#功能编写:返回上一个窗体
    def back(self):
        self.lab1.destroy()
        self.lab2.destroy()
        self.textemp.destroy()
        self.textshi.destroy()
        self.butt1.destroy()
        self.butt2.destroy()
        self.butt3.destroy()
        self.buttback.destroy()
        self.fan.destroy()
        page1(root)

????????? ? ? ? ——————————点这里返回上一个窗体——————————

3、窗体如何出现在桌面上

#窗体实现
root=Tk()
p1=page1(root)

root.mainloop()

关于函数不一一进行解释了,有空闲会将关于函数的笔记写在另一篇博客里?

程序中获取温湿度仅通过直接写入方式,可考虑更改成通过平台获取实际的温湿度(下次一定

文章来源:https://blog.csdn.net/weixin_70754287/article/details/135542369
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。