In class Window2 I am trying to update the label text by taking the data from a variable which is showing the real-time data but I am not able to refresh my label text using below code:
import tkinter as tk
from tkinter import *
import tkinter.messagebox
from tkinter import ttk
import random
import time
import datetime
import imutils
from PIL import ImageTk, Image
def main():
root = Tk()
app = Window1(root)
root.mainloop()
return
class Window1:
def __init__(self,master):
self.master = master
self.master.title("Test Login System")
self.master.geometry('1350x750+0+0')
self.master.config(bg='powder blue')
self.frame = Frame(self.master, bg ='powder blue')
self.frame.pack()
self.username = StringVar()
self.password = StringVar()
self.lblTitle = Label(self.frame, text = 'Test Login System', font = ('arial',30,'bold'), bg='powder blue',
fg = 'black')
self.lblTitle.grid(row=0, columnspan = 2, pady = 40)
#==================================================================================================
self.LoginFrame1 = LabelFrame(self.frame, width = 1350, height = 600
,font = ('arial',20,'bold'), relief = 'ridge', bg = 'cadet blue', bd = 20)
self.LoginFrame1.grid(row = 1, column =0)
self.LoginFrame2 = LabelFrame(self.frame, width=1000, height=600
,font=('arial', 20, 'bold'), relief='ridge', bg='cadet blue', bd = 20)
self.LoginFrame2.grid(row=2, column=0)
#=====================================Label and Entry==============================================
self.lblUsername = Label(self.LoginFrame1,text = 'Username', font=('arial', 10, 'bold'), bd = 22,
bg= 'cadet blue', fg = 'Cornsilk')
self.lblUsername.grid(row=0, column=0)
self.txtUsername = Entry(self.LoginFrame1, font = ('arial', 15, 'bold'),textvariable= self.username)
self.txtUsername.grid(row=0, column=1, padx =8, pady =8)
self.lblpassword = Label(self.LoginFrame1,text = 'Password', font=('arial', 10, 'bold'),bd = 22,
bg= 'cadet blue', fg = 'Cornsilk')
self.lblpassword.grid(row=1, column=0, padx =8, pady =8)
self.txtpassword = Entry(self.LoginFrame1, font = ('arial', 15, 'bold'), textvariable= self.password)
self.txtpassword.grid(row=1, column=1)
#=====================================Button========================================================
self.btnLogin = Button(self.LoginFrame2, text='Login', width=17, font = ('arial', 8), command = self.Login_System)
self.btnLogin.grid(row=0, column=1, padx =10, pady =10)
self.btnReset = Button(self.LoginFrame2, text='Reset', width=17, font = ('arial', 8), command = self.Rest)
self.btnReset.grid(row=0, column=2, padx =10, pady =10)
self.btnExit = Button(self.LoginFrame2, text='Exit', width=17, font = ('arial', 8), command = self.iExit)
self.btnExit.grid(row=0, column=3, padx =10, pady =10)
def Login_System(self):
u = (self.username.get())
p = (self.password.get())
if (u == str("admin") and p == str("admin")):
self.newWindow = Toplevel(self.master)
self.app = Window2(self.newWindow)
else:
tkinter.messagebox.askyesno("Login System","Invalid Login Detail")
self.username.set("")
self.password.set("")
self.txtUsername.focus()
def Rest(self):
self.username.set("")
self.password.set("")
self.txtUsername.focus()
def iExit(self):
self.iExit = tkinter.messagebox.askyesno("Login System", "Are You Sure you want to Exit?")
if self.iExit > 0:
self.master.destroy()
else:
command = self.new_window
return
def new_window(self):
self.newWindow = Toplevel(self.master)
self.app = Window2(self.newWindow)
class Window2:
def loopCap(self):
self.img = Image.open('img.jpg')
self.label = ImageTk.PhotoImage(self.img)
self.canvas.create_image(0, 0, anchor=NW, image=self.label)
self.canvas.after(100, self.loopCap)
print("updated")
def lbl_txt(self):
self.text = StringVar()
self.text.set("99.97")
self.label.config(text=str(self.text))
print("Text Updated")
self.label.after(100, self.lbl_txt)
def __init__(self, master):
self.master = master
self.master.title("Test Reference System")
self.master.geometry('1350x750+0+0')
self.master.config(bg='powder blue')
self.frame = Frame(self.master, bg='powder blue')
self.frame.pack()
self.lblTitle = Label(self.frame, text='Detection Image', font=('arial', 30, 'bold'), bg='powder blue',
fg='black',anchor=CENTER)
self.lblTitle.grid(row=0, columnspan=3, pady=20)
self.lblTitle1 = Label(self.frame, text='Accuracy: ', font=('arial', 15, 'bold'), bd=1, bg='powder blue',
fg='black', anchor=W)
self.lblTitle1.grid(row=1, pady=10)
self.text = StringVar()
self.text.set("99.97")
self.lblTitle2 = Label(self.frame, textvariable=self.lbl_txt, font=('arial', 15, 'bold'), bd=1, bg='powder blue',
fg='black', anchor=W)
self.lblTitle2.grid(row=1, column=1, pady=5)
self.canvas = Canvas(self.master, width =700, height = 700)
self.canvas.pack()
self.img = Image.open('img.jpg')
self.label = ImageTk.PhotoImage(self.img)
self.canvas.create_image(0,0, anchor=CENTER, image=self.label)
print("Load")
self.canvas.after(100, self.loopCap)
if __name__ == '__main__':
main()Suggestions will be very helpful here
