Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 5, 2019 23:14:54

Magister6239
Зарегистрирован: 2019-08-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

bind в Tkinter

Ребят помогите пожалуйста. Почему при нажатии на ‘z’ не печатается ‘pry’? Вот код:

 from tkinter import *
root = Tk()
root.geometry('100x50')
def pry():
    print('pry')
root.bind('<z>', pry())
root.mainloop()

Офлайн

#2 Дек. 6, 2019 06:26:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

bind в Tkinter

Magister6239
Почему при нажатии на ‘z’ не печатается ‘pry’?
Потому что вы наверное делаете не в соответствии с документацией. Дайте ссылку на документацию на основании которой вы решили что оно так будет работать.
 root.bind('<z>', pry()) # Это одно
root.bind('<z>', pry) # А это совсем другое
Не спец в Tk но события ‘<z>’ думаю просто нет.



Офлайн

#3 Дек. 6, 2019 07:10:50

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

bind в Tkinter

Попробуй так:

 root.bind("z", pry)
Функция должна принимать один аргумент:
 def pry(event):
    print('pry')
При прогоне проверь раскладку клавиатуры, т.к. с раскладкой “RU” работать не будет, ибо будет набиваться буква “я”.
Корректнее будет, если обработку клавиш вывести в отдельную функцию и привязать её через Key
 def klawa(event):
    klawisha = event.keysym  # Нажатый символ
    # или
    kod_klaw = event.keycode  # Код клавиши
    # Далее обрабатываем интересующее значение 
    ...
    ...
root.bind("<Key>", klawa)

Отредактировано Rafik (Дек. 6, 2019 07:11:47)

Офлайн

#4 Дек. 6, 2019 07:34:51

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

bind в Tkinter

Откуда-то в своё время надыбал интересную утилитку, которая выводит на консоль атрибуты событий клавиатуры и мыши. Прилагаю эту утилиту. Запускаем, жмём клавиши или щелкаем мышкой в окне и смотрим результат в терминале.

Отредактировано Rafik (Дек. 6, 2019 07:35:25)

Прикреплённый файлы:
attachment scanKeys.py (1,4 KБ)

Офлайн

#5 Дек. 6, 2019 20:16:24

Magister6239
Зарегистрирован: 2019-08-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

bind в Tkinter

клава у меня была на eng. За функцию спасиб)

Отредактировано Magister6239 (Дек. 6, 2019 20:18:57)

Офлайн

#6 Дек. 6, 2019 20:16:57

Magister6239
Зарегистрирован: 2019-08-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

bind в Tkinter

doza_and
Потому что вы наверное делаете не в соответствии с документацией. Дайте ссылку на документацию на основании которой вы решили что оно так будет работать.
root.bind('<z>', pry()) # Это одно
root.bind('<z>', pry) # А это совсем другое
Не спец в Tk но события ‘<z>’ думаю просто нет.

pry это функция, поэтому там стоят скобки()

Офлайн

#7 Дек. 6, 2019 21:22:53

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

bind в Tkinter

Magister6239
pry это функция, поэтому там стоят скобки()
нужно передавать имя функции(без скобок) а не результат выполнения (с скобками)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version