Tkinter网格管理器(TypeError)

时间:2016-04-17 18:06:31

标签: python python-2.7 tkinter ttk

我试图将一组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 个答案:

答案 0 :(得分:2)

听取错误。它知道它在说什么......好吧无论如何它会告诉你一些事情。查看Tkinter.Button.grid的文档,它会告诉我们。您需要执行Button.grid(column=GridColumn, row=GridRow)

你看,错误是正确的。你向Button.grid()提供了太多的参数。使用Button.grid(...)实际上只是tk.Button.grid(Button, ...)的快捷方式,所以你们共同提供了三个参数,但是.grid()期待一个按钮实例,cnf和一些关键字参数。您使用Button.grid(...)而不是tk.Button(...)来提供按钮实例,但是您提供了另外两个位置参数。您需要提供列号和行号作为关键字参数。

答案 1 :(得分:0)

使用grid() layout manager options的正确语法:

 Button.grid(column = GridColumn, row = GridRow)