Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
5 / 5 / 1
Регистрация: 19.05.2018
Сообщений: 200

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

23.12.2018, 00:28. Показов 1591. Ответов 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,763
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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru