所以基本上我想做的是检查计算机是否可以访问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中的某人建议我使用我不知道的队列)
答案 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()