@aaaaaNaaasTasia

Почему горячая клавиша не привязывается к методу?

Я пытаюсь привязать сочетание клавиш к функции, чтобы создавать отрезки без пунктиров. Привязка работает, но отрезок почему-то все равно рисуется с пунктирами. Как это исправить?

import tkinter as tk

root = tk.Tk()
root.geometry('500x500')

prev_x = None
prev_y = None




def create_line_dash(event):

    global prev_x, prev_y
    thin = scale.get()
    x = event.x
    y = event.y
    if prev_x:
        cnvs.focus_set()
        cnvs.create_line(x, y, prev_x, prev_y, width=thin, dash=(10, 2),  fill=lbox.get('active'))
    if prev_x and event.keycode == 37:
        cnvs.focus_set()
        cnvs.create_line(x, y, prev_x, prev_y, width=thin, fill=lbox.get('active'))


    prev_x = x
    prev_y = y


cnvs = tk.Canvas(root, bg='white', width=500, height=500)
lbox=tk.Listbox(cnvs, width=7, height=5)
scale = tk.Scale(cnvs, orient='vertical', length=100, from_=2, to=5, bg='white')

l1st = ['red', 'green', 'pink', 'yellow', 'blue']
for q in l1st:
    lbox.insert(0, q)


cnvs.bind('<Control-Button-1>', create_line_dash)
cnvs.bind('<Button-1>', create_line_dash)


lbox.place(x=20, y=50)
scale.place(x=20, y=150)
cnvs.place(x=0, y=0)

root.mainloop()
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
@o5a
Нажатие модификаторов по-другому определяется, через event.state
ctrl  = (event.state & 4) != 0 # признак нажатия Ctrl
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы