Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Can't modify global variable in python(Solved)

from tkinter import *
import time

check = False

window = Tk()

window.geometry("1920x1080")

def typeTime():
    hour   = int(time.strftime("%H"))
    minute = int(time.strftime("%M"))
    second = int(time.strftime("%S"))
    hourInput2 = int(hourInput.get())
    minuteInput2 = int(minuteInput.get())
    secondInput2 = int(secondInput.get())
    
    if(hour == hourInput2 and minute == minuteInput2 and second == secondInput2):
        print("now")
    global check
    check = True

canvas = Canvas(window, width = 1980, height = 1020)

canvas.pack()

hourInput = StringVar()
minuteInput = StringVar()
secondInput = StringVar()

setHour = Entry(window, text = hourInput, font = (20)).place(x = 100, y = 20, width = 100, height = 40)

setMinute = Entry(window, text = minuteInput, font = (20)).place(x = 300, y = 20, width = 100, height = 40)

setSecond = Entry(window, text = secondInput, font = (20)).place(x = 500, y = 20, width = 100, height = 40)

canvas.create_text(60, 40, text = "Hour: ", font = (20))

canvas.create_text(260, 40, text = "Minute: ", font = (20))

canvas.create_text(460, 40, text = "Second: ", font = (20))

submit = Button(text = "Submit", height = 2, width = 10, font = (10), command = typeTime)

submit.place(x = 100, y = 100)

if check == True:
    print("Pressed")
    submit.config(relief = SUNKEN)

window.mainloop()

I’m trying to make a button to stay pressed, so I tried to make this happens with a global variable. The variable check is initially False, but when typeTime() is called via the submit object it should change its value in True and when check will be tested later to keep my button pressed using config method.

What am I doing wrong, as neither the button is still pressed nor the message "Pressed" is displayed in the console ?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The window.mainloop() is the internal loop inside object window, not in your script so that is why it didn’t work. You need to add the action inside the function typeTime:

from tkinter import *
import time

if __name__=='__main__':
    check = False

    window = Tk()

    window.geometry("1920x1080")

    def typeTime(button):
        hour   = int(time.strftime("%H"))
        minute = int(time.strftime("%M"))
        second = int(time.strftime("%S"))
        hourInput2 = int(hourInput.get())
        minuteInput2 = int(minuteInput.get())
        secondInput2 = int(secondInput.get())

        if(hour == hourInput2 and minute == minuteInput2 and second == secondInput2):
            print("now")
#         global check
#         check = True
        print('Pressed')
        button.config(relief=SUNKEN)


    canvas = Canvas(window, width = 1980, height = 1020)
    
    canvas.pack()

    hourInput = StringVar()
    minuteInput = StringVar()
    secondInput = StringVar()

    setHour = Entry(window, text = hourInput, font = (20)).place(x = 100, y = 20, width = 100, height = 40)

    setMinute = Entry(window, text = minuteInput, font = (20)).place(x = 300, y = 20, width = 100, height = 40)

    setSecond = Entry(window, text = secondInput, font = (20)).place(x = 500, y = 20, width = 100, height = 40)

    canvas.create_text(60, 40, text = "Hour: ", font = (20))

    canvas.create_text(260, 40, text = "Minute: ", font = (20))

    canvas.create_text(460, 40, text = "Second: ", font = (20))

    submit = Button(text = "Submit", height = 2, width = 10, font = (10))
    submit.config(command = lambda submit=submit:typeTime(submit))

    submit.place(x = 100, y = 100)
    
#     if check == True:
#         print("Pressed")
#         submit.config(relief = SUNKEN)

    window.mainloop()
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading