Python 在tkinter画布中突出显示单击的项目?

Python 在tkinter画布中突出显示单击的项目?,python,tkinter,python-imaging-library,tkinter-canvas,Python,Tkinter,Python Imaging Library,Tkinter Canvas,总体思路: 许多项目(大多数是小图像)都是在画布上创建的。用户可以单击任何项目并将其移动 我需要用户通过显示(绘制)边框/更改亮度/任何方法了解上次单击的项目。。关于那个项目 是否有任何图像/项目选项可以帮助应用此想法。例如,这是您的按钮- B1=按钮(root,text=“单击我”,command=单击我) 我们可以在这里传递更多参数,例如-- 高亮度颜色= 按钮具有焦点时用于高亮显示边框的颜色。默认值为系统特定值。(highlightColor/highlightColor) 及 高光厚度=

总体思路:

许多项目(大多数是小图像)都是在画布上创建的。用户可以单击任何项目并将其移动

我需要用户通过显示(绘制)边框/更改亮度/任何方法了解上次单击的项目。。关于那个项目


是否有任何图像/项目选项可以帮助应用此想法。

例如,这是您的按钮-

B1=按钮(root,text=“单击我”,command=单击我)

我们可以在这里传递更多参数,例如--

高亮度颜色= 按钮具有焦点时用于高亮显示边框的颜色。默认值为系统特定值。(highlightColor/highlightColor)

高光厚度= 高亮显示边框的宽度。默认值是特定于系统的(通常为一个或两个像素)。(高光厚度/高光厚度)


每当单击按钮时,您必须指定要在函数中执行的某些操作。您可以做的是告诉该函数通过上述参数略微增加边框的厚度。:)

例如,这是您的按钮-

B1=按钮(root,text=“单击我”,command=单击我)

我们可以在这里传递更多参数,例如--

高亮度颜色= 按钮具有焦点时用于高亮显示边框的颜色。默认值为系统特定值。(highlightColor/highlightColor)

高光厚度= 高亮显示边框的宽度。默认值是特定于系统的(通常为一个或两个像素)。(高光厚度/高光厚度)


每当单击按钮时,您必须指定要在函数中执行的某些操作。您可以做的是告诉该函数通过上述参数略微增加边框的厚度。:)

您可以通过为上次单击的小部件编写一个简单的修改外观方法来实现这一点。下面是示例代码。下面我们将执行两个操作。首先将最后一个小部件的外观更改为正常,然后更改最后一个单击的小部件的外观以突出显示它

def modifyAppearance(self, widget):
    global previously_clicked
    if 'previously_clicked' in globals():
        # rolling back the appearance of previous widget to normal
        previously_clicked['bg'] = widget['bg']
        previously_clicked['activebackground'] = widget['activebackground']
        previously_clicked['relief'] = widget['relief']

    # changing the appearance of the last clicked widget
    widget['bg'] = 'green'
    widget['activebackground'] = '#33B5E5'
    widget['relief'] = 'sunken'
    previously_clicked = widget

您还需要在其他方法中定义以前单击的
global\u
,您将在这些方法中定义小部件。你可以参考我的建议。它具有此功能

您可以通过为上次单击的小部件编写一个简单的修改外观方法来实现。下面是示例代码。下面我们将执行两个操作。首先将最后一个小部件的外观更改为正常,然后更改最后一个单击的小部件的外观以突出显示它

def modifyAppearance(self, widget):
    global previously_clicked
    if 'previously_clicked' in globals():
        # rolling back the appearance of previous widget to normal
        previously_clicked['bg'] = widget['bg']
        previously_clicked['activebackground'] = widget['activebackground']
        previously_clicked['relief'] = widget['relief']

    # changing the appearance of the last clicked widget
    widget['bg'] = 'green'
    widget['activebackground'] = '#33B5E5'
    widget['relief'] = 'sunken'
    previously_clicked = widget

您还需要在其他方法中定义以前单击的
global\u
,您将在这些方法中定义小部件。你可以参考我的建议。它具有此功能

谢谢,在处理小部件时,很高兴知道这一点。我在画布中使用图像,因此这种方法似乎对它们不起作用。我尝试使用canvas.bbox(当前),它给了我一个可接受的结果,这是有意义的!!谢谢,在处理小部件时,这是一个很好的了解。我在画布中使用图像,因此这种方法似乎对它们不起作用。我尝试使用canvas.bbox(当前),它给了我一个可接受的结果,这是有意义的!!