运行我的程序后崩溃,因为重载,我听说你解决这个使用线程问题我真的不明白它是如何工作的以及如何使用它。该程序基本上在GUI上运行服务器列表,然后suproces应检查服务器是否在线,如果没有发送电子邮件。保存在json文件中的所有信息。所以基本上当这个程序启动子进程时它只是“没有响应”。您可以找到完整的代码https://github.com/aurimasjank/Pinger-Alpha/blob/master/Pinger_Alpha.py
class GUI(Tk):
def __init__(self):
self.tk = Tk()
self.Firstgo=True
self.timespend = 0
self.tk.wm_title("Web Service")
self.tk.configure(background='black')
#self.tk.wm_state('zoomed')
self.tk.attributes("-fullscreen",True)
#Frames
self.tk.columnconfigure(0, weight=1)
self.tk.rowconfigure(0, weight=1)
self.left= Frame(self.tk, bg="black")
self.left.grid(column=0, row = 0, pady=5 ,padx=10, sticky=N)
self.center = Separator(self.tk, orient="vertical")
self.center.grid(column=1, row=0, sticky="ns")
sty = Style(self.center)
sty.configure("TSeparator", background="#00CC00")
self.right= Frame(self.tk, bg="black")
self.right.grid(column=2, row = 0, pady=5,padx=10, sticky=N)
self.probar= Frame(self.tk, bg= "black")
self.probar.grid(column=1, row = 1, sticky= S)
self.botFrame = Frame(self.tk, bg="black")
self.botFrame.grid(column=2, row = 1, pady=5, sticky= S)
self.colnr = 0
self.rownrleft = 0
self.rownrright = 0
self.statuslabel = Label(self.botFrame, text="Script status : ", bg="black",fg="#00CC00", font=("Helvetica", 24))
self.statuslabel.grid(column=0, row = 0)
self.progress = ttk.Progressbar(self.probar,orient ="horizontal",length = 410, mode ="determinate")
self.progress.grid(column=0, row = 0,pady= (20,0))
self.string = StringVar()
self.timecount = StringVar()
self.titlelbl3= Label(self.probar, textvariable= self.string ,bg="black", fg="#00CC00",font=("Helvetica", 24))
self.titlelbl3.grid(column=0, row = 1)
self.statuscount1 = Label(self.botFrame, text="Pinger last run in :",fg="#00CC00", bg="black", font=("Helvetica", 24))
self.statuscount1.grid(column=0, row = 0)
self.statuscount = Label(self.botFrame, textvariable=self.timecount,fg="#00CC00", bg="black", font=("Helvetica", 24))
self.statuscount.grid(column=0, row = 1)
self.tk.after(1000, self.task)
self.label = {}
self.statuscount = 0
self.freezecheck = 0
def task(self):
i = 0
self.list=[]
self.probarcount=0
self.string.set (str(self.probarcount) + " / " +str(len(self.list)*10))
self.progress["value"] = self.probarcount
self.progress["maximum"] = len(self.list)*10
self.right
self.list = openfile()
name=""
if self.label != {}:#deleting previous information that we could refresh
for ele in self.label:
self.label[ele].destroy()
self.label= {}
whatframe = self.right
whatrow= self.rownrright
self.list = sorted(self.list, key=itemgetter('status'))
for elem in self.list:#creating visual status if server is online text is in color green and opsite red
if "_VPN" in elem["name"]:
whatframe = self.left
whatrow= self.rownrleft
name=elem["name"][:-4]
self.rownrleft+=1
else :
whatframe = self.right
whatrow= self.rownrright
self.rownrright+=1
name=elem["name"]
if elem["status"]=="true":
lb = Label(whatframe,text=name , fg="#00CC00",bg="black", font=("Helvetica", 28))
if elem["status"]=="false":
lb = Label(whatframe,text=name, fg="black",bg="#00CC00", font=("Helvetica", 28))
lb.grid(column= 0, row = whatrow ,pady=10 , sticky= W+E)
self.label[elem["name"]] = lb
self.wd=self.tk.winfo_reqwidth()
self.wdd=self.tk.winfo_width()
self.fwidth = self.wdd/5
self.left.columnconfigure(0,minsize=self.fwidth*2)
self.right.columnconfigure(0,minsize=self.fwidth*2)
self.center.columnconfigure(0,minsize=self.fwidth)
self.tk.after(1000, self.Pinger)
def Pinger(self):
#Function to check servers and if its down send email
self.tk.after(1000, self.task)
#forever loop
Gui= GUI()
Gui.mainloop()