5 / 5 / 1
Регистрация: 19.05.2018
Сообщений: 200

Переключение между полями и ограничение пользовательского ввода

23.12.2018, 00:28. Показов 1614. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Подскажите как организовать следующую задачу на примере базового фрагмента.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import tkinter
from tkinter import*
 
root=Tk()
 
def retrieve_input():
    inputValue1=Edit1.get("1.0","end-1c")
    inputValue2=Edit2.get("1.0","end-1c")
    print(inputValue1+' || '+inputValue2)
 
Edit1=Text(root, width=1, height=1, font='TrebuchetMS 12 bold', fg='black')
Edit1.place(x=5, y=5)
Edit2=Text(root, width=1, height=1, font='TrebuchetMS 12 bold', fg='green')
Edit2.place(x=20, y=5)
Btn=Button(root, text='action', command=lambda: retrieve_input())
Btn.place(x=50, y=5)
 
root.mainloop()
Мне нужно чтобы эдит 1:
1. принимал только цифры (в делфи я бы это сделал просто прописав в событии OnKeyPress процедуру проверки входящего чара в массив из "угодных" символов)
2. после того как символ прошел "фейс контроль" переместил бы фокус в соседнее окно в событии OnKeyUp при условии валидности первого введенного символа (это можно было бы выяснить при помощи флага, по наличию хоть какого-нибудь текста внутри эдит1 и.т.д. )

Подскажите КАК эти две небольшие задачи можно решить в Tkinter. Что в ткинтере является аналогом описанных событий, где рыть их синтаксис?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2018, 00:28
Ответы с готовыми решениями:

Переключение между полями ввода по нажатию кнопок.
Есть HTML страница, которая содержит форму с n-ым количеством инпутов. Написать скрипт, который будет при помощи двух неподвижных кнопок...

Приложение MVVM. Ограничение пользовательского ввода для численных свойств
Элд Хасп, Теперь давайте запретим пользователю вводить в поля цена/количество на складе нечисловые значения. Что для этого нужно?

Переключение ввода между сценами
Здравствуйте, помогите советом, я уже 2 день не знаю как такое сделать. Суть в следующем, есть устройство на нем материал в котором рендер...

1
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
24.12.2018, 19:51
валидатор делать
типа так
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
51
52
import tkinter as tk  # python 3.x
# import Tkinter as tk # python 2.x
 
class Example(tk.Frame):
 
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
 
        # valid percent substitutions (from the Tk entry man page)
        # note: you only have to register the ones you need; this
        # example registers them all for illustrative purposes
        #
        # %d = Type of action (1=insert, 0=delete, -1 for others)
        # %i = index of char string to be inserted/deleted, or -1
        # %P = value of the entry if the edit is allowed
        # %s = value of entry prior to editing
        # %S = the text string being inserted or deleted, if any
        # %v = the type of validation that is currently set
        # %V = the type of validation that triggered the callback
        #      (key, focusin, focusout, forced)
        # %W = the tk name of the widget
 
        vcmd = (self.register(self.onValidate),
                '%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
        self.entry = tk.Entry(self, validate="key", validatecommand=vcmd)
        self.text = tk.Text(self, height=10, width=40)
        self.entry.pack(side="top", fill="x")
        self.text.pack(side="bottom", fill="both", expand=True)
 
    def onValidate(self, d, i, P, s, S, v, V, W):
        self.text.delete("1.0", "end")
        self.text.insert("end","OnValidate:\n")
        self.text.insert("end","d='%s'\n" % d)
        self.text.insert("end","i='%s'\n" % i)
        self.text.insert("end","P='%s'\n" % P)
        self.text.insert("end","s='%s'\n" % s)
        self.text.insert("end","S='%s'\n" % S)
        self.text.insert("end","v='%s'\n" % v)
        self.text.insert("end","V='%s'\n" % V)
        self.text.insert("end","W='%s'\n" % W)
 
        # Disallow anything but lowercase letters
        if S == S.lower():
            return True
        else:
            self.bell()
            return False
 
if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2018, 19:51
Помогаю со студенческими работами здесь

Передача значения между полями ввода.
Ситуация такая есть форма на ней 2 поля ввода берущие значения из одного справочника, как зделать чтобы при выборе элемента справочника в 1...

Необходима реализация связи между полями ввода
Всем доброго времени суток. Я не силён в HTML, по этому прошу вашей помощи. Имеется 2 поля <input> <input...

Как создать ограничение? Надо создать ограничение ввода букв, а то программа виснет!
var a:integer; begin repeat; writeln ('Введите число не равное еденице'); readln (a);

Проверка пользовательского ввода
Есть вопрос о проверке пользовательского ввода в консоль, а связан он с тем, что в Windows 10 можно вставлять в неё текст из буфера обмена....

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


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

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

Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru