Я пишу небольшую утилиту для закрытия процессов автоматически. И столкнулся с проблемой циклов. Так как весь графический интерфейс это и есть один большой бесконечный цикл, при включении дополнительного цикла вес интерфейс залагивает. Так вот, нужно, чтобы он не залагивал и работал дальше.
Вот код ( Я новичок в программировании и этот код может быть плохим. Знаю) :
print("Запуск...", end='')
from tkinter import *
import time
import os
import pyautogui as pg
import subprocess as sp
print('ok! ')
#Functions
def logicp(event):
def_name=name.get()
def_text=text.get()
try:
def_delay=delay.get()
def_delay=int(def_delay)
except:
work['text']=''.join("Можно только число!")
time.sleep(4)
work['text']=''.join("Остановлено")
if (def_name and def_text and def_delay):
work['text']=''.join("Работа...")
while 1:
print("Проверка...")
time.sleep(def_delay)
tasks=sp.getoutput('tasklist');
if 'Zoom.exe' in tasks:
os.system('taskkill /f /im Zoom.exe')
pg.alert(str(def_text), str(def_name))
else:
pass
root=Tk()
root.resizable(width=False, height=False)
root.geometry('400x300')
root.title('Zoom parser')
work=Label(text='Остановлено', font='Consolas 10')
start=Button(root, text='Начать')
#enters
text=Entry(root, width=30)
textl=Label(text='Текст', font='Consolas 10')
name=Entry(root, width=30)
namel=Label(text='Имя окна', font='Consolas 10')
delay=Entry(root, width=10)
delayl=Label(text='Задержка', font='Consolas 10')
#Packer
work.pack()
start.pack()
textl.pack()
text.pack()
namel.pack(side=RIGHT)
name.pack(side=RIGHT)
delayl.pack(side=LEFT)
delay.pack(side=LEFT)
#Binds
start.bind("<Button-1>", logicp)
root.mainloop()
Без цикла в функции
logicp()
не получится! А без
root.mainloop()
программа сразу будет закрываться.