Проблема с форматированием и отображением выводов с ткинтером и лупами - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь правильно настроить формат моей программы в графическом интерфейсе tkinter, но по какой-то причине я получаю сообщение об ошибке:

    product += ('%-10s%-10s%-0s%-0s') % (str(names[i])+ str(addedHours[i]) + str(payOut) + "\n") TypeError: not enough arguments for format string

Желаемый выход: enter image description here

Ниже приведен фрагмент кода, связанного с проблемой (обратите внимание, что части 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', 'Pay\n'))
        self.text.insert(END,("%-10s%-10s%-0s") % ('---','-----','---\n'))

        self.text.insert(END, product)

1 Ответ

1 голос
/ 16 апреля 2019

Полученное вами сообщение об ошибке TypeError: not enough arguments for format string точно сообщает, в чем заключается проблема.

Рассмотрим следующую строку кода:

product += ('%-10s%-10s%-0s%-0s') % (str(names[i])+ str(addedHours[i]) + str(payOut) + "\n") 

Приведенный выше код функционально идентиченthis:

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...