带有GUI的python中的实时Internet连接检查器

时间:2019-03-20 17:39:53

标签: python-3.x tkinter queue python-multithreading internet-connection

所以基本上我想做的是检查计算机是否可以访问Internet,直到程序结束。...

它是在用tkinter制作的GUI中.....我试图创建一个新线程并在while循环(while 1 :)中运行该函数,但是它说

Traceback (most recent call last):

.

.

.

RuntimeError: main thread is not in main loop

这是程序

import threading
import socket
import time

def is_connected():
    try:
        socket.create_connection(("www.google.com", 80))
        print("Online",end="\n")
    except OSError:
        print("offline",end="\n")

tt3 =threading.Event()

while 1:
    t3=threading.Thread(target=is_connected)
    t3.start()
    time.sleep(1)

这是带有GUI的程序

import threading
import socket
import time
import tkinter
top = tkinter.Tk()
top.title("")
l=tkinter.Label(top,text='')
l.pack()

def is_connected():
    try:
        socket.create_connection(("www.google.com", 80))
        print("Online",end="\n")
        l.config(text="Online")
    except OSError:
        l.config(text="offline")
        print("offline",end="\n")

tt3 =threading.Event()

while 1:
    t3=threading.Thread(target=is_connected)
    t3.start()
    time.sleep(1)

top.configure(background="#006666")
top.update()
top.mainloop()

任何建议或帮助都将受到欢迎!! (reddit中的某人建议我使用我不知道的队列)

1 个答案:

答案 0 :(得分:0)

首先,while循环将阻止tkinter主循环处理事件。其次,您在每个循环中反复创建新线程。

更好地使用def BookDetail(request, slug): most_recent = Book.objects.order_by('-timestamp')[:3] book= get_object_or_404(Book, slug=slug) ...

.after()