osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tkinter


On 3/18/2019 12:00 PM, Informatico de Neurodesarrollo wrote:
> Hello friends:
> 
> I am a beginner on programming in python.
> 
> I want make a simple program that test continuously (every 5 seg) the 
> connection? to internet and change the background color when are not 
> available. I try this , but not work properly:
> 
>  ?#!/usr/bin/env python3
> # -*- coding: utf-8 -*-

Not needed for py 3 where utf-8 is default

> from tkinter import *
> import socket, time
> 
> def DetectarConexion():
>  ??? testConn = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>  ??? try:
>  ??? ??? testConn.connect(('8.8.8.8', 80))
>  ??? ??? testConn.close()
>  ??? ??? return True
>  ??? except:
>  ??? ??? testConn.close()
>  ??? ??? return False
> 
> root = Tk()
> root.title("Conexi?n")
> root.geometry("80x50")
> 
> while True:
>  ??? if DetectarConexion():
>  ??? ??? # Background:Green
>  ??? ??? root.config(background="#38EB5C")
>  ??? else:
>  ??? ??? # Background:Red
>  ??? ??? root.config(background="#F50743")
>  ??? time.sleep(5)

This is your problem.  Loop with event loop in order to not block gui. 
See working code below.

> root.mainloop()

#!/usr/bin/env python3

from tkinter import *

connected = False
def DetectarConexion():
     global connected
     connected = not connected
     return connected

root = Tk()
root.title("Conexi?n")
root.geometry("80x50")

def colorupdate():
     if DetectarConexion():
         # Background:Green
         root.config(background="#38EB5C")
     else:
         # Background:Red
         root.config(background="#F50743")
     root.after(1000, colorupdate)  # 1000 milliseconds = 1 second

colorupdate()
root.mainloop()



-- 
Terry Jan Reedy