98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594

В Entry не запрещаются Буквы

15.01.2025, 12:57. Показов 1108. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
- Здравствуйте Ребята! Всего Вам самого наилучшего!
Видел здесь на форуме способ, как можно запретить полю ввода (Entry) вводить все, кроме чисел.
Этот маленький пример (от kapbepucm) работает на 100%.
Python
1
2
3
4
5
6
7
8
9
10
from tkinter import *
root = Tk()
def validate(value, action):
    if action == '1':
        return value.isdigit()
    return True
entry = Entry(root, validate="all")
entry['vcmd'] = (entry.register(validate),'%P','%d')
entry.pack()
root.mainloop()
В моем приложении тоже есть Поле Ввода. Хотел применить Ваш способ.
Но ничего не выходит. Даже НЕ ВЫЗЫВАЕТСЯ метод-'validate' !!!
Сделал для данной Темы маленький пробный пример. Приводится ниже:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from tkinter import *
# from tkinter import ttk
 
 
class Child:
    def __init__(self, datas):
        # (.....)
        self.datas = datas
        # (.....)
        self.ent_rows = None
        # (Основное Окно)
        root = Tk()
        root.title('Проба')
        root.geometry("230x230+600+250")
        root.resizable(False, False)
        root.config(bg='light gray')
        # (.....)
        self.draw_widgets(root)
 
        root.mainloop()
 
 
    def draw_widgets(self, root):
        xx = 10
        yy = 10  # отступ по вертикали
        l_ws, l_hs = 120, 20  # (размеры Меток)
        e_ws, e_hs = 70, 20  # (размеры Полей Ввода)
 
        # (число Строк)
        lab_rows = Label(root, text='Число Строк:', bg='light gray', font="Arial 10 bold", anchor="w")
        lab_rows.place(width=l_ws, height=l_hs, x=xx, y=yy)
        yy += 20
        self.ent_rows = Entry(root, bg='light green', font="Arial 10 bold")
        self.ent_rows.place(width=e_ws, height=e_hs, x=xx, y=yy)
        self.ent_rows['vcmd'] = (self.ent_rows.register(self.validate), '%P', '%d')
        # self.ent_rows['validatecommand'] = (self.ent_rows.register(self.validate), '%P', '%d')
        yy += 20
 
    def validate(self, value: str, action: str):  # ((( ПОЧЕМУ-ТО НЕ ВКЛЮЧАЕТСЯ ??? !!! )))
        """
          - функция-валидатор Правильного Числа
        :param value: - значение (введенная Строка)
        :param action: - действие ('0' - изъятие Символа; '1' - добавление Символа; '-1' - Поле Ввода - пусто)
        :return: - True/False
        """
        print(f"***  validate  ***")
 
# обращение:
datas = [(9, 9, 10)]
child = Child(datas)
- НЕ ЗАПРЕЩАЕТ буквы !!!
Смотрю на пример уже день. Чего я в упор не вижу?
Подскажите пожалуйста. Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2025, 12:57
Ответы с готовыми решениями:

Adding Entry Will Cause Text List To Exced 64k.entry Not Added
Вот такая ошибка выскакивает, понятно что идет переполнение rtitem Body, туда добавляеться куча DocLink через цикл Сам код привести не...

Ошибка с циклом Map.Entry entry:hashMap.entrySet
Пытаюсь спарсить сайт со списком и подробнее о каждом элементе. Всё делал по уроку на youtube. При запуске приложение как-бы пытается...

Заменить в исходном файле русские буквы ‘к’ на буквы ‘т’, буквы ‘т’ на буквы ‘к’, буквы ‘л’ на буквы ‘в’, буквы ‘в’ на
Задание: Заменить в исходном файле русские буквы ‘к’ на буквы ‘т’, буквы ‘т’ на буквы ‘к’, буквы ‘л’ на буквы ‘в’, буквы ‘в’ на буквы ‘л’.

5
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,309
15.01.2025, 13:34
Цитата Сообщение от Staut Посмотреть сообщение
Чего я в упор не вижу?
того что функция validate всегда возвращает None так как ничего не проверяет. меняем на
Python
1
2
3
4
5
6
7
8
9
10
    def validate(self, value: str, action: str):  # ((( ПОЧЕМУ-ТО НЕ ВКЛЮЧАЕТСЯ ??? !!! )))
        """
          - функция-валидатор Правильного Числа
        :param value: - значение (введенная Строка)
        :param action: - действие ('0' - изъятие Символа; '1' - добавление Символа; '-1' - Поле Ввода - пусто)
        :return: - True/False
        """
        if action == '1':
            return value.isdigit()
        return True
Добавлено через 2 минуты
читаем часть Валидация
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
15.01.2025, 13:45  [ТС]
- Semen-Semenich, все равно метод - validate() даже не вызывается!
В нем есть принт - print(f"*** validate ***"). Он не ку-ку-ет!
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,309
15.01.2025, 13:55
при чем тут принт? метод возвращает или истину или фальш от чего entry принимает ввод или нет
Python
1
2
3
4
5
6
7
8
9
    def validate(self, value: str, action: str):  # ((( ПОЧЕМУ-ТО НЕ ВКЛЮЧАЕТСЯ ??? !!! )))
        """
          - функция-валидатор Правильного Числа
        :param value: - значение (введенная Строка)
        :param action: - действие ('0' - изъятие Символа; '1' - добавление Символа; '-1' - Поле Ввода - пусто)
        :return: - True/False
        """
        print(f"***  validate  ***")
        return value.isdigit()
проверь при каждом вводе вызывается метод validate
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
15.01.2025, 14:12  [ТС]
- Да, в моем пробном примере я забыл поставить return. Сейчас поставил. Но у меня такое впечатление, что почему-то
в моем пробном примере не работает функция register() от моего Entry-'ent_rows'
(self.ent_rows.register(self.validate)).
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
17.01.2025, 11:27  [ТС]
- Прошу прощения за некоторое отсутствие.
Semen-Semenich, огромное спасибо за ХОРОШУЮ ДОКУ! Во всем разобрался более-менее.
Вопрос закрыт. Всем огромное Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2025, 11:27
Помогаю со студенческими работами здесь

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B
Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B в C# консоль

Duplicate entry
Пытаюс выполнить запрос в MySQL сервере: INSERT INTO hosts (host, kod) VALUES ('ааааа', 1)Получаю ошибку: Duplicate entry '0' for key 1 ...

Entry и Button
Есть программа. import pandas as pd import numpy as np arr = pd.read_excel('New.xlsx').to_numpy() non_zero_arr =...

Entry Processes
В течении дня сайт дважды выходил из строя. Точнее не работали только те страницы, в скриптах которых происходит подключение к БД. При этом...

Проблема с entry и get()
Создаю программу учета домашней медиатеки. Начинающий программист. Возникла проблема в функции search() и соответственно list_search(arg). ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru