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

一、界面效果

二、具体代码

        不要忘记包的导入

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

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

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

  • 57
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值