我在这里要做的是将图像添加到我拥有的按钮,然后基于点击或悬停更改图像。我所遵循的所有示例都使用.config()
方法。
对于我的生活,我无法弄清楚为什么它不知道按钮对象是什么。有趣的是,如果我修改Button定义行以包含图像选项,一切都很好。但是,有了它,似乎我无法使用.config()
PlayUp = PhotoImage(file=currentdir+'\Up_image.gif')
PlayDown = PhotoImage(file=currentdir+'\Down_image.gif')
#Functions
def playButton():
pButton.config(image=PlayDown)
pButton = Button(root, text="Play", command="playButton").grid(row=1)
pButton.config(image=PlayUp)
答案 0 :(得分:17)
pButton = Button(root, text="Play", command="playButton").grid(row=1)
在这里,您要创建一个Button
类型的对象,但是您立即调用grid
方法,返回None
。因此,pButton
被分配None
,这就是下一行失败的原因。
你应该这样做:
pButton = Button(root, text="Play", command="playButton")
pButton.grid(row=1)
pButton.config(image=PlayUp)
即。首先,您创建按钮并将其分配给pButton
,然后然后将其分配给它。
答案 1 :(得分:1)
canvas = tk.Tk()
canvas.title("Text Entry")
text_label = ttk.Label(canvas, text = "Default Text")
text_label_1 = ttk.Label(canvas, text = "Enter Your Name: ").grid(column = 0, row = 1)
text_variable = tk.StringVar()
text_entry = ttk.Entry(canvas, width = 15, textvariable = text_variable)
text_entry.grid(column = 1, row = 1)
def change_greeting():
text_label.configure(text = "Hello " + text_variable.get())
event_button = ttk.Button(canvas, text="Click me and see what happens", command = change_greeting).grid(column = 2, row = 1)
text_label.grid(column = 0, row = 0)
canvas.resizable(False, False)
canvas.mainloop()
在上面的代码中,text_label.grid(column = 0, row = 0)
放在最后,也就是在标签上的所有操作完成之后。
如果在上面的代码中执行了 text_label = ttk.Label(canvas, text = "Default Text").grid(column = 0, row = 0)
,则会产生错误。因此需要谨慎对待对象的显示
答案 2 :(得分:0)
我不知道在类似情况下是否有帮助:
mywidget = Tkinter.Entry(root,textvariable=myvar,width=10).pack()
mywidget.config(bg='red')
这会产生这个错误:
AttributeError: 'NoneType' object has no attribute 'config'
但是如果我写在不同的行上,一切都会顺利进行:
mywidget = Tkinter.Entry(root,textvariable=myvar,width=10)
mywidget.pack()
mywidget.config(bg='red')
我不明白,但我花了很多时间来解决... :-(