#python #python-3.x #tkinter
#python #python-3.x #tkinter
Вопрос:
Я пытаюсь правильно отформатировать свою программу в графическом интерфейсе tkinter, но по какой-то причине я получаю сообщение об ошибке:
product = ('%-10s%-10s%-0s%-0s') % (str(names[i]) str(addedHours[i]) str(payOut) "n") TypeError: not enough arguments for format string
Вот фрагмент кода, связанный с проблемой (обратите внимание, что части Name / Hours / Pay и — работают нормально, только не те, которые указаны в переменной product)
def printPayroll(self):
i = 0
product = ""
for y in names:
payOut = float(wage[i]) * float(addedHours[i])
product = ('%-10s%-10s%-0s%-0s') % (str(names[i]) str(addedHours[i]) str(payOut) "n")
i = 1
self.text.insert(END,("%-10s%-10s%-0s") % ('Name', 'Hours', 'Payn'))
self.text.insert(END,("%-10s%-10s%-0s") % ('---','-----','---n'))
self.text.insert(END, product)
Ответ №1:
Сообщение об ошибке, которое вы получаете, TypeError: not enough arguments for format string
, точно сообщает вам, в чем проблема.
Рассмотрим эту строку кода:
product = ('%-10s%-10s%-0s%-0s') % (str(names[i]) str(addedHours[i]) str(payOut) "n")
Приведенный выше код функционально идентичен этому:
s = str(names[i]) str(addedHours[i]) str(payOut) "n"
product = ('%-10s%-10s%-0s%-0s') % s
Для вашей строки форматирования требуется четыре аргумента, но вы даете только один. Простое решение — заменить каждый
на ,
:
product = ('%-10s%-10s%-0s%-0s') % (str(names[i]), str(addedHours[i]), str(payOut), "n")
Комментарии:
1. что за бог <3 <3 <3
2. @jimmyjohn123: нет, не совсем. Вам просто нужно прочитать сообщение об ошибке и предположить, что оно говорит вам правду. Затем спросите себя: «Почему он думает, что я предоставляю только один аргумент?».
3. кроме того, если бы я вставил знак доллара в str (выплата), что мне нужно было бы сделать?
4. да, это правда, я предположил, что использование ‘ ‘ затем разделяет на разные аргументы, например, как ‘,’ это делает.
5. @jimmyjohn123: если вы хотите, чтобы в выходных данных был знак доллара, вы должны поместить его в строку формата.