SO Я использую Python 3.4 и tkinter.Ярлык продолжает появляться
И когда я снова вызываю функцию снова n, которая содержит метку, метка продолжает появляться в окне, но предыдущая метка не исчезает?
Как удалить любую напечатанную метку из окна графического интерфейса, как только функция вызывается, а затем отображать новую?
Вот код: -
#def prestart():
#here I check if number of match is okay, if not, user is redirected to setting else, I call start()
def start():
#CPU Choice
cpu_choice = Label(historyframe, text = "CPU Choosed: {}".format(dict['cpu_choice']))
#Played Match
#played_num_of_match = Label(scoreframe, text = "Number of Matches Played: {}".format(int(dict['match_played'])))
#Display Status
status_disp = Label(scoreframe, text = "Current Status: {}".format(dict['status']))
if(int(dict['match_played']) < int(dict['num_of_match'])):
playframe.grid(row = 1, column = 0)
historyframe.grid(row = 2, column = 1)
status_disp.pack(fill=X)
elif(int(dict['match_played']) == int(dict['num_of_match'])):
playframe.grid(row = 1, column = 0)
historyframe.grid(row = 2, column = 1)
status_disp.pack(fill=X)
cp = dict['cpu_point']
up = dict['user_point']
result(cp, up)
cpu_choice.pack(fill = X)
scoreframe.grid(row = 2, column = 0)
Эта функция только обновляет экран!
def send_value(x):
#Here I run logic of game and change value of key in dictionary and call start() at end of change.
Теперь кнопки выбора не имеют какого-либо определения, так как их не нужно снова называть n. Я просто заставляю playframe исчезать. Вот код для них: -
#Display Question
question = Label(playframe, text = "Rock? Paper? Scissor?")
#Rock
rock = Button(playframe, text = "Rock!", command = lambda: send_value("ROCK"))
#Paper
paper = Button(playframe, text = "Paper!", command = lambda: send_value("PAPER"))
#Scissor
scissor = Button(playframe, text = "Scissor!", command = lambda: send_value("SCISSOR"))
Так что, когда пользователь нажимает кнопку Рок/Бумага/Scissor, я просто изменить значение ключа в словаре! Но если я сохраню функцию внешней метки, она не будет автоматически обновляться!
Все остальное работает отлично. Я сейчас начну делать код чище.
Почему бы просто не обновить текст в существующей этикетке? Также покажите код. –
Вы просто пытаетесь обновить ярлык? Почему вы создаете его внутри функции? – maccartm
Пожалуйста, покажите нам MCVE, который иллюстрирует проблему. –