【发布时间】:2019-06-13 12:41:09
【问题描述】:
总体思路:
在画布上创建了许多项目(大多数是小图像)。用户可以单击任何项目并移动它。
我需要用户通过在该项目周围显示(绘制)边框/更改亮度/任何方法来了解上次单击的项目。
是否有任何图像/项目选项可以帮助应用这个想法。
【问题讨论】:
标签: python tkinter python-imaging-library tkinter-canvas
总体思路:
在画布上创建了许多项目(大多数是小图像)。用户可以单击任何项目并移动它。
我需要用户通过在该项目周围显示(绘制)边框/更改亮度/任何方法来了解上次单击的项目。
是否有任何图像/项目选项可以帮助应用这个想法。
【问题讨论】:
标签: python tkinter python-imaging-library tkinter-canvas
您可以通过为最后单击的小部件编写简单的修改外观方法来实现此目的。这是示例代码。下面我们执行两个动作。首先将最后一个小部件的外观更改为正常,然后将最后点击的小部件的外观更改为突出显示。
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 previously_clicked,您将在其中定义小部件。你可以参考我的full code here。它有这个功能
【讨论】:
例如,这是你的按钮-
B1 = Button(root, text = "点击我", command = clickme)
我们可以在这里传递更多的参数,比如--
高亮颜色= 当按钮具有焦点时用于突出显示边框的颜色。默认值是系统特定的。 (highlightColor/HighlightColor)
和
高亮厚度= 高亮边框的宽度。默认值是系统特定的(通常是一个或两个像素)。 (highlightThickness/HighlightThickness)
...
或
...
每当单击按钮时,您都必须在函数中指定要执行的某些操作。您可以做的是您可以告诉该函数通过上述参数略微增加边框的厚度。 :)
【讨论】: