Tkinter Grid Manager (TypeError)

Я пытаюсь поместить набор из 16 картинок в кадр tkinter. Я создал словарь, который отображает имя адреса изображения (хранящееся в imgbutton) в качестве ключа к словарю imagedict, значением которого является строка, содержащая его позицию в сетке tkinter (например, кнопка в столбце 0 и строка =1 будут имеют имя backgroundpic5.jpg и значение "01").

Каждый ряд содержит 4 изображения и всего 4 ряда. Эквивалентом imgbutton PhotoImage является buttonphoto (создается с использованием PIL). Однако, когда я пытаюсь запустить это, он говорит мне, что команда grid_configure принимает 2 аргумента, а я дал 3 (Ошибка типа)

Pos=imagedict[imgbutton]
GridColumn=Pos[0]; GridRow=Pos[1]
Button= tk.Button(root, image=buttonphoto)
Button.grid(GridColumn, GridRow)
Button.pack()

Заявление об ошибке,

Traceback (most recent call last):
  File "C:\Users\USER\Desktop\ComputerProject\Tester2Imagebg.py", line 44, in <module>
  Button.grid(GridColumn, GridRow)
  TypeError: grid_configure() takes at most 2 arguments (3 given)

Спасибо:)

2 ответа

Решение

Слушай ошибку. Он знает, о чем говорит... в любом случае, он вам кое-что говорит. Посмотрите документацию для Tkinter.Button.grid и это скажет. Вам нужно сделать Button.grid(column=GridColumn, row=GridRow)

Вы видите, ошибка верна. Вы дали слишком много аргументов Button.grid(), С помощью Button.grid(...) на самом деле просто ярлык для tk.Button.grid(Button, ...)Итак, все вместе вы дали три аргумента, но .grid() ожидает экземпляр кнопки, cnfи некоторые ключевые аргументы. Вы предоставляете экземпляр кнопки с помощью Button.grid(...) вместо tk.Button(...), но вы дали два других позиционных аргумента. Вы должны предоставить номера столбцов и строк в качестве аргументов ключевых слов.

Используйте правильный синтаксис grid() параметры менеджера макета:

 Button.grid(column = GridColumn, row = GridRow)
Другие вопросы по тегам