Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.02.2023
Сообщений: 4

KeyPress для кнопки

07.02.2023, 13:36. Показов 1993. Ответов 13

Студворк — интернет-сервис помощи студентам
Нужно что бы в результате события KeyPress для кнопки, изменится её размер и надпись.

Код 1
Кликните здесь для просмотра всего текста
from tkinter import *
def key (event):
button['text'] = 'Привет'
button['width'] = 20
button['height'] = 4
root = Tk()
root.title('Мой проект')
root.geometry('200x100+200+200')
button=Button(text='Ok', width=5)
button.pack(pady = 20)
root.bind('<KeyPress>', key)


Этот код работает, кнопка меняется, но KeyPress применим к окну root

Код 2
Кликните здесь для просмотра всего текста
from tkinter import *
def key (event):
button['text'] = 'Привет'
button['width'] = 20
button['height'] = 4
root = Tk()
root.title('Мой проект')
root.geometry('200x100+200+200')
button=Button(text='Ok', width=5)
button.pack(pady = 20)
button.bind('<KeyPress>', key)


Этот код не работает, где KeyPress применил для кнопки.

Советовали использовать атрибут command (button = Button(text = "text",command = имя функции)), но насколько мне известно, атрибут command применяется, если к кнопке применяется событие Click , а мне нужно событие KeyPress.
Для связывания кнопки с обработчиком какого-либо события, применяется метод bind(). Но если событие Click, которое в принципе, по умолчанию является событием для кнопки, то метод bind() можно не использовать. Тогда можно упростить код, используя атрибут command.
Выходит, этот атрибут мне не поможет.

Ещё читал, так ли это на самом деле не знаю, что KeyPress применяется к главному окну и ко всему, что на нём?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2023, 13:36
Ответы с готовыми решениями:

Как использовать KeyPress для работы кнопки "Пауза"
Нужно использовать этот обработчик что бы сделать подобие кнопки. При первом нажатии что бы переменная принимала true, при втором false....

Keypress для textbox
В textbox вводятся слова в одну строку, разделенные запятой,содержащие только заглавные латинские буквы и состоящие из 2 до 5 символов. ...

KeyPress для TableWidget
Доброго времени суток. Подскажите, как организовать проверку ввода в QTableWidget. Мне нужно, что бы туда кроме чисел, ничего нельзя...

13
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
07.02.2023, 19:09
Лучший ответ Сообщение было отмечено pit0n4ik как решение

Решение

Проблема в том что кнопка не в фокусе

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from tkinter import *
 
def key (event):
    button['text'] = 'Привет'
    button['width'] = 20
    button['height'] = 4
    
root = Tk()
root.title('Мой проект')
root.geometry('200x100+200+200')
 
button=Button(text='Ok', width=5)
button.focus_set()
button.bind('<KeyPress>', key)
button.bind('<Button-1>', key)
button.pack(pady = 20)
1
Заблокирован
07.02.2023, 20:16
pit0n4ik,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from tkinter import *
 
def key(event):
    button['text'] = 'Привет'
    button['width'] = 20
    button['height'] = 4
    
root = Tk()
root.title('Мой проект')
root.geometry('200x100+200+200')
 
button = Button(root, text='Ok', width=5)
button.pack(pady=20)
button.bind('<Button-1>', key)
 
root.mainloop()
Внесенные изменения:

добавил параметр root в виджет Button, чтобы он добавлялся в главное окно
, переместил кнопку.оператор pack перед операторами bind, чтобы правильно отобразить кнопку перед установкой привязок событий
, удалил кнопку.оператор focus_set, так как в нем нет необходимости и он может замедлить работу кода.
0
0 / 0 / 0
Регистрация: 07.02.2023
Сообщений: 4
07.02.2023, 20:21  [ТС]
Цитата Сообщение от TimutGin Посмотреть сообщение
Проблема в том что кнопка не в фокусе
Большое спасибо,
focus_set() передаёт фокус виджету, в данном случае кнопке.
Сделал так:

from tkinter import *
def key (event):
button['text'] = 'Куликов'
button['width'] = 20
button['height'] = 4
root = Tk()
root.title('Мій проект')
root.geometry('200x100+200+200')
button = Button(text='Ok', width=5)
button.focus_set()
button.bind('<KeyPress>', key)
button.pack(pady = 20)

Теперь, при нажатии любой клавиши, KeyPress передаётся кнопке и происходит задуманное)
Большое спасибо!
0
Заблокирован
07.02.2023, 20:23
Цитата Сообщение от pit0n4ik Посмотреть сообщение
Большое спасибо!
незашто
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
07.02.2023, 20:25
OlegNeChe, ой, тебя опередил еще один копипастер((((
Кстати, почему, когда ты пишешь "полотно" о коде у тебя нет гр. ошибок, а в одном слоче ты допускаешь их 4???
0
0 / 0 / 0
Регистрация: 07.02.2023
Сообщений: 4
07.02.2023, 20:49  [ТС]
Цитата Сообщение от OlegNeChe Посмотреть сообщение
Внесенные изменения:
добавил параметр root в виджет Button, чтобы он добавлялся в главное окно
, переместил кнопку.оператор pack перед операторами bind, чтобы правильно отобразить кнопку перед установкой привязок событий
, удалил кнопку.оператор focus_set, так как в нем нет необходимости и он может замедлить работу кода.
Работает по рекомендации TimutGin, по вашей, событие KeyPress, при нажатии любой клавиши на кл-ре, не происходит, кнопка не меняется. Меняется если кликнуть по ней ЛКМ, но это не требовалось.

В любом случае спасибо!

Добавлено через 10 минут
Цитата Сообщение от DOPIXKMNLD Посмотреть сообщение
еще один копипастер((((
А почему копипастер? Он подсказал с focus_set(). Я вчера про это в инете читал, но так и не обратил внимание. Возможно не обратил потому, что кто-то написал, что KeyPress применяется к главному окну и ко всему, что на нём.
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
07.02.2023, 21:06
pit0n4ik, потому что подсказал не он, а нейросеть chatgpt
Посмотрите его другие ответы. Сравните его ответ с ответомTimutGin
1
0 / 0 / 0
Регистрация: 07.02.2023
Сообщений: 4
07.02.2023, 21:28  [ТС]
Цитата Сообщение от DOPIXKMNLD Посмотреть сообщение
потому что подсказал не он, а нейросеть chatgpt
Вам тоже спасибо, по свободе про chatgpt прочитаю)
Мне не ответ 100% нужен, а подсказка, куда копать.
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
07.02.2023, 21:47
Цитата Сообщение от pit0n4ik Посмотреть сообщение
Большое спасибо,
focus_set() передаёт фокус виджету, в данном случае кнопке.
Сделал так:
Проблема в том что теперь не кликнуть по кнопке мышью,(если нужно то в моём коде можно и мышью и кнопкой)

Добавлено через 9 минут
Цитата Сообщение от DOPIXKMNLD Посмотреть сообщение
pit0n4ik, потому что подсказал не он, а нейросеть chatgpt
Посмотрите его другие ответы. Сравните его ответ с ответомTimutGin
Я чатом не пользуюсь, пока руки не доходят зарегистрироваться там.
1
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
07.02.2023, 21:54
TimutGin, значит другая нейросеть

Добавлено через 23 секунды
Цитата Сообщение от pit0n4ik Посмотреть сообщение
про chatgpt прочитаю)
не советовал бы
деградируете как он
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
07.02.2023, 21:58
Цитата Сообщение от DOPIXKMNLD Посмотреть сообщение
TimutGin, значит другая нейросеть
если только нейросеть головного мозга
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
07.02.2023, 22:42
TimutGin, что несешь? твой код один в один как у чатжпт
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
07.02.2023, 23:15
Цитата Сообщение от DOPIXKMNLD Посмотреть сообщение
TimutGin, что несешь? твой код один в один как у чатжпт
Ты серьёзно? Я добавил две строчки к неработающему коду автора темы и он стал как код из GPT?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2023, 23:15
Помогаю со студенческими работами здесь

Событие KeyPress для текстбокса
Здравствуйте, не нашел этой проблемы на форуме. Вот есть у меня форма Form1, на ней текстбокс textBox1, я хочу для текстбокса создать...

Не работает событие KeyPress для TextBox
Подскажите пожалуйста!!!!Создаю textbox int Y = 50; lb4 =new Label(); lb4.Text = &quot;Введите диаметр...

Обработка KeyPress для нескольких TextBox C++
на форме имеется множество текстбоксов, я написал проверку на ввод только чисел, привязал к keyPress. как применить этот код ко всем...

Настройка события KeyPress для dataGridViewTextBoxColumn
Добрый день! Есть такой вопрос: как правильно задать событие KeyPress для dataGridViewTextBox. У меня есть такой код обработчика...

Аналог события keypress для мобильного
У меня есть поле инпут, где вводится числовое значение и налету проверяется, если оно больше некого значения, то ввод отменяется. Вот часть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru