выделить элементы, на которые щелкнули в холсте tkinter? - PullRequest
0 голосов
/ 13 июня 2019

Общая идея:

Многие элементы (большинство небольших изображений) созданы на холсте. Пользователь может щелкнуть любой элемент и переместить его.

Мне нужно, чтобы пользователь знал, на какой элемент последний раз щелкнули, показывая (рисуя) границу / меняя яркость / любым методом ... вокруг этого элемента.

Есть ли варианты изображения / элемента, которые помогут применить эту идею.

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

Этого можно добиться, написав простой метод изменения внешнего вида для последнего нажатого виджета. Вот пример кода. Ниже мы выполняем два действия. Сначала измените внешний вид последнего виджета на нормальный, а затем измените внешний вид последнего нажатого виджета, чтобы выделить его.

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 и в других методах, где вы будете определять виджеты. Вы можете сослаться на мой полный код здесь . Он имеет эту функциональность

0 голосов
/ 13 июня 2019

Например, это ваша кнопка-

B1 = Кнопка (root, text = "Нажмите меня", команда = clickme)

здесь мы можем передать больше параметров, таких как -

highlightcolor = Цвет, используемый для выделения рамки, когда кнопка имеет фокус. Значение по умолчанию зависит от системы. (HighlightColor / HighlightColor)

и

highlightthickness = Ширина выделенной границы. Значение по умолчанию зависит от системы (обычно один или два пикселя). (HighlightThickness / HighlightThickness)

...

OR

...

При каждом нажатии кнопки вы должны указывать какое-либо действие, которое необходимо выполнить в функции. Что вы можете сделать, так это сказать, что эта функция немного увеличивает толщину границы по указанным параметрам. :)

...