Samuel May
Samuel May

Reputation: 75

Updating tkinter labels

Why won't the variable AnswerQuestionPageText2Variable update? I have tried mainloop, configure, and set but it stays the same. I want it to choose a random question out of the list TrueQuestions every time the MainMenuButton1Command (start button) is pressed.

#imports
from tkinter import *
from tkinter.font import *
import random
#lists
TrueQuestions = [
    'true question 1',
    'true question 2',
    'true question 3',]
current_question = random.choice(TrueQuestions)
#command defines
def MainMenuButton1Command():
    MainMenu.withdraw()
    AnswerQuestionPage.deiconify()
    #attempting to update AnswerQuestionPageText2Variable when start button pressed
    current_question = random.choice(TrueQuestions)
    AnswerQuestionPageText2Variable.set(current_question)
def MainMenuButton5Command():
    quit()
def AnswerQuestionPageButton1Command():
    AnswerQuestionPage.withdraw()
    MainMenu.deiconify()
#MainMenu
MainMenu = Tk()
MainMenu.attributes("-fullscreen", True)
MainMenu.title("IQ extreme Main Menu")
MainMenu.configure(bg="blue")
BigFont = Font(family="Tahoma",size=48,weight="bold")
SmallFont = Font(family="Tahoma",size=24)
TinyFont = Font(family="Tahoma",size=18)
MainMenuButton1 = Button(MainMenu,bg="white",fg="black",font=TinyFont,text="Start",width=20,command=MainMenuButton1Command)
MainMenuButton1.place(x=525,y=400)
MainMenuButton5 = Button(MainMenu,bg="red",fg="black",font=TinyFont,text="Quit",width=5,command=MainMenuButton5Command)
MainMenuButton5.place(x=1200,y=950)
#AnswerQuestionPage
AnswerQuestionPage = Tk()
AnswerQuestionPage.withdraw()
BigFont = Font(AnswerQuestionPage,family="Tahoma",size=48,weight="bold")
SmallFont = Font(AnswerQuestionPage,family="Tahoma",size=24)
TinyFont = Font(AnswerQuestionPage,family="Tahoma",size=18)
AnswerQuestionPage.attributes("-fullscreen", True)
AnswerQuestionPage.title("IQ extreme")
AnswerQuestionPage.configure(bg="blue")
AnswerQuestionPageText2Variable = StringVar()
AnswerQuestionPageText2Variable.set(current_question)
AnswerQuestionPageText2 = Label(AnswerQuestionPage,bg="blue",fg="black",font=BigFont,text="Question: "+str(current_question))
AnswerQuestionPageText2.place(x=350,y=50)
AnswerQuestionPageButton1 = Button(AnswerQuestionPage,bg="white",fg="black",font=TinyFont,text="Home",width=5,command=AnswerQuestionPageButton1Command)
AnswerQuestionPageButton1.place(x=1205,y=5)

Any help would be great. Thanks.

Upvotes: 1

Views: 85

Answers (2)

hussic
hussic

Reputation: 1920

Here you can see working code for textvariable:

from tkinter import *
from tkinter.font import *
import random
# lists
TrueQuestions = [
    'true question 1',
    'true question 2',
    'true question 3', ]
current_question = random.choice(TrueQuestions)
AnswerQuestionPage = Tk()
BigFont = Font(AnswerQuestionPage, family="Tahoma", size=48, weight="bold")
SmallFont = Font(AnswerQuestionPage, family="Tahoma", size=24)
TinyFont = Font(AnswerQuestionPage, family="Tahoma", size=18)
AnswerQuestionPage.attributes("-fullscreen", True)
AnswerQuestionPage.title("IQ extreme")
AnswerQuestionPage.configure(bg="blue")
AnswerQuestionPageText2Variable = StringVar()
AnswerQuestionPageText2Variable.set(current_question)
AnswerQuestionPageText2 = Label(AnswerQuestionPage,
                                bg="blue",
                                fg="black",
                                font=BigFont,
                                textvariable=AnswerQuestionPageText2Variable)
AnswerQuestionPageText2.place(x=350, y=50)
AnswerQuestionPage.mainloop()

Upvotes: 2

hussic
hussic

Reputation: 1920

You must say to AnswerQuestionPageText2 Label to use AnswerQuestionPageText2Variable with: Label(textvariable=AnswerQuestionPageText2Variable, ...)

Upvotes: 2

Related Questions