2015-03-14 3 views
0

Я создаю графический интерфейс для настольной игры. Моя игровая логика подсчитывает части как черного, так и белого цветов и возвращает сумму. В графическом интерфейсе я использую две пары ярлыков для отображения информации.Python tkinter label добавляет дополнительную цифру в строку

self._white_score_label = tkinter.Label(
      master = self._info_frame, text = 'White:', font = default_font) 

     self._white_score_label.grid(
      row = 0, column = 0, padx = 0, pady = 10, 
      sticky = tkinter.E) 

     self._white_score_num = tkinter.Label(
      master = self._info_frame, text = str(self._white_count), font = default_font) 

     self._white_score_num.grid(
      row = 0, column = 1, padx = 0, pady = 10, sticky = tkinter.W) 

     self._black_score_label = tkinter.Label(
      master = self._info_frame, text = 'Black:', font = default_font) 

     self._black_score_label.grid(
      row = 1, column = 0, padx = 0, pady = 10, sticky = tkinter.E) 


     self._black_score_num = tkinter.Label(
      master = self._info_frame, text = str(self._black_count), font = default_font) 

     self._black_score_num.grid(
      row = 1, column = 1, padx = 0, pady = 10, sticky = tkinter.W) 

Проблема состоит в том, когда один счетчик имеет двузначную строку, а другая однозначную строку, то один-цифровая строка получает случайное число, добавленное к нему. HERE - скриншот. Оболочка показывает, что функции подсчета верны, показывая 9 и 16. Однако метка неверна.

ответ

1

Эта цифра 2 была там до того, как вы напечатали 9. Май оценка была 12 или 22 раньше, затем она стала 9, и вы напечатали 9 поверх 12, 9 был нарисован над 1, но 2 остался. Один из способов исправить это - это рисовать прямоугольник над этой областью перед визуализацией метки или рендеринг нескольких пробелов после оценки. Но правильным способом, вероятно, было бы повторное использование одного и того же ярлыка каждый раз, когда вы делаете оценку, и меняйте свой текст, а не каждый раз создавайте новый ярлык.

Смежные вопросы