【问题标题】:highlight clicked items in tkinter canvas?突出显示 tkinter 画布中单击的项目?
【发布时间】:2019-06-13 12:41:09
【问题描述】:

总体思路:

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

我需要用户通过在该项目周围显示(绘制)边框/更改亮度/任何方法来了解上次单击的项目。

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

【问题讨论】:

    标签: python tkinter python-imaging-library tkinter-canvas


    【解决方案1】:

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

    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。它有这个功能

    【讨论】:

    • 谢谢,在处理小部件时很高兴知道这一点。我在画布中使用图像,因此这种方法似乎不适用于它们。我尝试使用 canvas.bbox(CURRENT),它给了我一个可以接受的结果
    • 有道理!!
    【解决方案2】:

    例如,这是你的按钮-

    B1 = Button(root, text = "点击我", command = clickme)

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

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

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

    ...

    ...

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-14
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多