Python Forum
changing tkinter label from thread
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
changing tkinter label from thread
#1
Hi all,

I am getting pretty far with my GUI but I have one major issue I cannot solve. I stripped down my program to the absolute bare minimum of my issue. I think the issue is that I cannot over write my tkinter label using a thread.

The code fully runs. Just press "s" on your keyboard to start the thread.

Upon opening the script, my tkinter Label correctly shows "initial words". Then I press "s" to start the thread, this prints the words "one" and "two" and calls the function changeState. Even though it prints correctly, changeState does not do it's job (to change the label text to "updated words"). I have no idea why!!


import tkinter as tk
import time
from threading import Thread
import keyboard


class MainPage(tk.Frame):
    def __init__(self, *args, **kwargs):
        super().__init__(**kwargs)
        self.state_lbl = tk.Label(self, text="initial words")
        self.state_lbl.grid(row=0, column=0)

    def changeState(self):
        self.state_lbl['text'] = "updated words"  # this line is not working!


class MyFunctions:

    def one(self):
        print("one")    # this line works fine
        main_instance = MainPage()     # is this wrong?
        main_instance.changeState()    # is this wrong?
        time.sleep(1)

    def two(self):
        print("two")    # this line works fine
        time.sleep(1)


class runCycle(Thread):
    def __init__(self):
        Thread.__init__(self)
        my = MyFunctions()
        self.twoFunctions = [my.one, my.two]

    def run(self):
        for func in self.twoFunctions:
            func()


run_instance = runCycle()

keyboard.add_hotkey('s', callback=run_instance.run)   # keyboard "S" used to start program

if __name__ == "__main__":
    root = tk.Tk()
    main = MainPage(root)
    main.grid()
    root.wm_geometry("600x300")
    root.mainloop()
Reply


Messages In This Thread
changing tkinter label from thread - by nanok66 - Jun-06-2020, 05:22 AM
RE: changing tkinter label from thread - by Yoriz - Jun-06-2020, 08:33 AM
RE: changing tkinter label from thread - by nanok66 - Jun-07-2020, 01:37 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Tkinter: An image and label are not appearing. emont 7 575 Mar-21-2024, 03:00 PM
Last Post: deanhystad
  tkinter destroy label inside labelFrame Nick_tkinter 3 4,545 Sep-17-2023, 03:38 PM
Last Post: munirashraf9821
  [Tkinter] Updating Tkinter label using multiprocessing Agusms 6 3,134 Aug-15-2022, 07:10 PM
Last Post: menator01
  [Tkinter] The Text in the Label widget Tkinter cuts off the Long text in the view malmustafa 4 4,852 Jun-26-2022, 06:26 PM
Last Post: menator01
  [Tkinter] Trouble changing Font within tkinter frame title AnotherSam 1 4,118 Sep-30-2021, 05:57 PM
Last Post: menator01
  tkinter: Image to Label Maryan 10 5,245 Oct-29-2020, 01:48 PM
Last Post: joe_momma
  Tkinter - How can I extend a label widget? TurboC 2 2,777 Oct-13-2020, 12:15 PM
Last Post: zazas321
  Tkinter: How to assign calculated value to a Label LoneStar 7 3,847 Sep-03-2020, 08:19 PM
Last Post: LoneStar
  [Tkinter] Tkinter delete values in Entries, when I'm changing the Frame robertoCarlos 11 5,798 Jul-29-2020, 07:13 PM
Last Post: deanhystad
  [Tkinter] tkinter, dropdowns with changing options Sheepykins 4 9,799 Jul-03-2020, 06:06 AM
Last Post: jdos

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020