Multithreading python,two tkinter windows

I have made a python code & using multithreading in it. this is very basic code, not using queues & other stuff.

  1. Task is to create two independent Tkinter windows

  2. Code has four files:
    main.py:creates individual thread
    analog.py: generate random values every 1 sec & 10 sec
    screen.py: Tkinter file, screen keeps on updating every 1 sec
    scree2.py: Tkinter file, screen keeps on updating every 10 sec

  3. My code never run on gives anything. However if in main.py, I disable, one of either screen thread, another screen works fine. i.e they don’t work together

main.py

[code]import thread
import time
import analog
import screen
import screen2

thread.start_new_thread(analog.get_analog_1 , (“Thread-1”,))
thread.start_new_thread(analog.get_analog_2 , (“Thread-2”,))
thread.start_new_thread(screen.display , (“Thread-3”,))
thread.start_new_thread(screen2.display , (“Thread-4”,))

while 1:
pass

[/code]

analog.py

[code]import time
from random import randint

current_time_1 = time.time();
current_time_2 = time.time();
read_ok_1 = 0
read_ok_2 = 0
analog_1 = 0
analog_2 = 0

#get reading at every 1 second
def get_analog_1(thread_name):
global read_ok_1, current_time_1,analog_1
while True:
if((time.time() - current_time_1) > 1):
if(0 == read_ok_1):
current_time_1 = time.time();
read_ok_1 = 1;
analog_1 = randint(0,100)

#get reading on update
def read_update_analog_1():
global read_ok_1,analog_1
data1 = 0
val1 = 0
if(1 == read_ok_1):
read_ok_1 = 0;
data1 = 1;
val1 = analog_1

return data1,val1                

#get reading at every 10 second
def get_analog_2(thread_name):
global read_ok_2, current_time_2,analog_2
while True:
if((time.time() - current_time_2) > 10):
if(0 == read_ok_2):
current_time_2 = time.time();
read_ok_2 = 1;
analog_2 = randint(0,100)

#get reading on update
def read_update_analog_2():
global read_ok_2,analog_2
data2 = 0
val2 = 0
if(1 == read_ok_2):
read_ok_2 = 0;
data2 = 1;
val2 = analog_2

return data2,val2        

[/code]

screen.py

from Tkinter import *
import analog
import thread
import time

class App():
    
    def __init__(self, master):
        self.master = master

        frame = Frame(master)
        frame.pack()

        label = Label(frame , text = "Analog" , font = ("Helvetica",32))
        label.grid(row = 0)

        self.reading_label = Label(frame, text = '0.0' , font = ("Helvetica",70))
        self.reading_label.grid(row = 1)
        
        self.update_reading()

        

    def update_reading(self):        
        data1,val1 = analog.read_update_analog_1()
        if(1 == data1):
            reading_str = "{:.1f}".format(val1)
            self.reading_label.configure(text = reading_str)
        
        self.master.after(100 , self.update_reading)
        

def display(threadName):
    root = Tk()
    root.wm_title("Ammeter")
    app = App(root)
    root.geometry("480x320")
    root.mainloop()

screen2.py

[code]from Tkinter import *
import analog
import thread
import time

class App():

def __init__(self, master):
    self.master = master

    frame = Frame(master)
    frame.pack()

    label = Label(frame , text = "Analog" , font = ("Helvetica",32))
    label.grid(row = 0)

    self.reading_label = Label(frame, text = '0.0' , font = ("Helvetica",70))
    self.reading_label.grid(row = 1)

    self.update_reading()

    

def update_reading(self):

    data1,val1 = analog.read_update_analog_2()
    if(1 == data1):
        reading_str = "{:.1f}".format(val1)
        self.reading_label.configure(text = reading_str)
    
    self.master.after(1000 , self.update_reading)

def display(threadName):
root = Tk()
root.wm_title(“Voltmeter”)
app = App(root)
root.geometry(“480x320”)
root.mainloop()
[/code]

Good question. Looks like user moved on.

I spent a day reading up on this topic but concluded it was out of my present reach and opted out with no comment. We never know… Eventually somebody may bring further light to the discussion.

Is this in Python 2 or 3?

And what is “thread” ?

Cannot say what version, specifically. Here is a SERP for python thread.

I see. _thread for Python 3. Must be written in Python 2. Thanks.