Home > Back-end >  after clicking my window goes not responding can any one hlep?
after clicking my window goes not responding can any one hlep?

Time:02-21

when I click the button it call's cpuTemp function and it has a after loop init which causes my not responding window and it is show values of cpu percent in my python console so the question is why it is not working '''

from tkinter import *
import psutil
import statistics
window = Tk()
# window size
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
# window
window.attributes('-transparentcolor', 'blue')
window.resizable(True, True)
window.attributes('-alpha', 0.96)
window.config(cursor='crosshair')
window.attributes('-topmost', 0)
window.geometry(f"{screen_width}x{screen_height} 20 20")
window.state('zoomed')
window.title('Hello Python')
# windTemp
def cpuTemp(event):
    #gettin temps
    cpuTemps = [psutil.cpu_percent(0.5), psutil.cpu_percent(0.5), psutil.cpu_percent(0.5),
                psutil.cpu_percent(0.5), psutil.cpu_percent(0.5)]
    meanVal = statistics.mean(cpuTemps)
    print(meanVal)
    lbl.configure(text=f'{meanVal}%')
    window.after(1000 , cpuTemp(event))
#button
btn = Button(window, text="This is Button widget", fg='blue')
btn.place(x=80, y=100)
btn.bind('<Button-1>', cpuTemp)

#label
lbl = Label(window , text='hi' , fg = "#0009ff0fc")
lblPlace = [ screen_width/2 , screen_height/2]
lbl.place(x=f'{lblPlace[0]}', y=f'{lblPlace[1]}')
window.mainloop()
# temp

this is not working can anyone fix this for me I would appreciate that.  
it stills print in my pycharm consloe so why is my window not responding.
i am using pycharm as you might know now.
and I want to make this code working .
i am a python newbie so pls help it would mean a lot to me...

CodePudding user response:

window.after(1000 , cpuTemp(event)) immediately runs cpuTemp(event) and passes the result to window.after. This creates an infinite loop since each call results in another call to the function.

The code needs to look something like this:

window.after(1000, cpuTemp, None)

The reason for None is that the function doesn't use the event, and the current event is relatively useless except for when the original event is being processed.

  • Related