我想了解如何抓住button
小部件,它是canvas.window()
项目的一部分,以更改其属性。
button1 = Button(self, text = "Quit", command = self.quit, anchor = W)
button1.configure(width = 10, activebackground = "#33B5E5", relief = FLAT)
button1_window = canvas1.create_window(10, 10, anchor=NW, window=button1)
在上面的代码段中,您可以看到我在窗口中嵌入了一个按钮。然后,我将此窗口嵌入canvas
。
现在,当用户点击button1_window
项时,我想控制该窗口内的按钮,然后更改其属性,例如边框尺寸/颜色。
答案 0 :(得分:2)
我想控制该窗口内的按钮然后 更改其属性,例如边框尺寸/颜色。
如果bind()
是一个按钮的函数,那么当单击该按钮时,tkinter会将event object
作为参数传递给该函数。 event object
具有widget
属性,该属性将是单击的按钮。以下是您可以执行的操作的示例:
import tkinter as tk
class MyFrame(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
canvas = tk.Canvas(
self,
width = 300,
height = 200)
canvas.create_rectangle(0,0,300,200, fill="red")
canvas.pack()
button_texts = ['hello', 'world', 'goodbye', 'mars']
for i, button_text in enumerate(button_texts):
button = tk.Button(text=button_text)
button.bind("<Button-1>", self.onclickButton)
canvas.create_window(
100, 50 + 30*i,
window=button,
)
def onclickButton(self, evt):
evt.widget.config(padx=100)
print(evt.widget.cget('text'))
root = tk.Tk()
root.geometry("500x300+10+0")
MyFrame(root).pack()
root.mainloop()