2015-03-26 2 views
0

Я создаю простую метку в tkinter, но она создана с помощью {}, чего я не хочу.Проблемы с созданием метки в tkinter

gameOver=Label(root, text=('Game over!\nYou scored', number, ' points!'), 
           font=('Arial Black', '26'), bg='red') 

Это мой код, где number переменная. Но он печатает «{Игра окончена! Вы набрали} 0 {баллов!}» Вот что получить с этим кодом (0 является значение number)

enter image description here

Любые идеи, чтобы решить эту проблему приветствуются

ответ

5

('Game over!\nYou scored', number, ' points!') является кортежем из трех элементов, но text, вероятно, ожидает строку вместо этого и делает странные вещи аргументам других типов. Используйте конкатенацию строк или format, чтобы предоставить одну строку.

gameOver=Label(root, text='Game over!\nYou scored' + str(number) + ' points!', 
          font=('Arial Black', '26'), bg='red') 

Или

gameOver=Label(root, text='Game over!\nYou scored {} points!'.format(number), 
          font=('Arial Black', '26'), bg='red') 
+0

Я попробовал первое предложение, и он прекрасно работает. Спасибо за помощь. – Luka1

+1

Просто FYI, проблема здесь не в том, что вы передали в кортеже, это потому, что строки в этом кортеже имели пробелы. Tkinter группирует отдельные строки в этом случае, чтобы указать, какое из них содержит это пространство. Если вы переходите в кортеж без белого усадьбы, например. 'text = ('few', 'words', 'no', 'spaces')', Tkinter автоматически заполняет метку пробелами между каждым элементом кортежа. – Jkdc

+0

@Jkdc: это немного сложнее, чем это. Например, если ваши данные имеют фигурные скобки, вы также получите неожиданный результат. –

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