Открыть сайт который ввел с кнопки tkinter
Перейти к содержимому

Открыть сайт который ввел с кнопки tkinter

  • автор:

Открыть сайт который ввел с кнопки tkinter

Элемент Entry представляет поле для ввода текста. С помощью конструктора Entry можно установить ряд параметров, основные из них:

  • background : фоновый цвет
  • cursor : курсор указателя мыши при наведении на текстовое поле
  • foreground : цвет текста
  • font : шрифт текста
  • justify : устанавливает выравнивание текста. Значение LEFT выравнивает текст по левому краю, CENTER — по центру, RIGHT — по правому краю
  • show : задает маску для вводимых символов
  • state : состояние элемента, может принимать значения NORMAL (по умолчанию) и DISABLED
  • textvariable : устанавливает привязку к элементу StringVar
  • width : ширина элемента

Элемент Entry имеет ряд методов. Основные из них:

  • insert(index, str) : вставляет в текстовое поле строку по определенному индексу
  • get() : возвращает введенный в текстовое поле текст
  • delete(first, last=None) : удаляет символ по индексу first. Если указан параметр last, то удаление производится до индекса last. Чтобы удалить до конца, в качестве второго параметра можно использовать значение END.
  • focus() : установить фокус на текстовое поле

Простейшее текстовое поле:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") ttk.Entry().pack(anchor=NW, padx=8, pady= 8) root.mainloop()

текстовое поле ввода Entry в tkinter и python

Получение введенного текста

Для получения текста из Entry, можно использовать его метод get() . Так, определим элемент Entry и по нажатию на кнопку выведем введенный текст на текстовую метку:

from tkinter import * from tkinter import ttk def show_message(): label["text"] = entry.get() # получаем введенный текст root = Tk() root.title("METANIT.COM") root.geometry("250x200") entry = ttk.Entry() entry.pack(anchor=NW, padx=6, pady=6) btn = ttk.Button(text="Click", command=show_message) btn.pack(anchor=NW, padx=6, pady=6) label = ttk.Label() label.pack(anchor=NW, padx=6, pady=6) root.mainloop()

получение текста из текстового поля Entry в tkinter в Python

Вставка и удаление текста

Рассмотрим вставку и удаление текста в Entry:

from tkinter import * from tkinter import ttk def clear(): entry.delete(0, END) # удаление введенного текста def display(): label["text"] = entry.get() # получение введенного текста root = Tk() root.title("METANIT.COM") root.geometry("250x150") label = ttk.Label() label.pack(anchor=NW, padx=6, pady=6) entry = ttk.Entry() entry.pack(anchor=NW, padx=6, pady=6) # вставка начальных данных entry.insert(0, "Hello World") display_button = ttk.Button(text="Display", command=display) display_button.pack(side=LEFT, anchor=N, padx=6, pady=6) clear_button = ttk.Button(text="Clear", command=clear) clear_button.pack(side=LEFT, anchor=N, padx=6, pady=6) root.mainloop()

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

entry.insert(0, "Hello World")

Кнопка Clear очищает оба поля, вызывая метод delete:

def clear(): entry.delete(0, END)

Вторая кнопка, используя метод get, получает введенный текст:

def display(): label["text"] = entry.get()

Валидация

С помощью параметра validate конструктора Entry можно задать, когда проводить валидацию введенного значения. Этот параметр может принимать следующие значения:

  • none : отсутствие валидации, значение по умолчанию
  • focus : валидация при получении фокуса
  • focusin : валидация при изменении фокуса
  • focusout : валидация при потере фокуса
  • key : валидация при каждом вводе нового символа
  • all : валидация при измении фокуса и вводе символов в поле

Параметр validatecommand позволяет установить команду валидации.

Рассмотрим небольшой пример. Допустим, пользовтаель должен ввести номер телефона в формете +xxxxxxxxxxx. То есть сначала должен идти знак +, а затем 11 цифр, например, +12345678901:

from tkinter import * from tkinter import ttk import re def is_valid(newval): return re.match("^\+\d$", newval) is not None root = Tk() root.title("METANIT.COM") root.geometry("250x200") check = (root.register(is_valid), "%P") phone_entry = ttk.Entry(validate="key", validatecommand=check) phone_entry.pack(padx=5, pady=5, anchor=NW) root.mainloop()

Итак, параметр validate=»key» указывает, что мы будем валидировать ввод при каждом нажати на клавиатуру. Параметр validatecommand=check говорит, что валидировать ввод будет команда «check». Эта команда представляет кортеж из двух элементов:

check = (root.register(is_valid), "%P")

Первый элемент — вызов метода root.register(is_valid) регистрирует функцию, которая собственно будет производить валидацию — это функция is_valid() . Второй элемент — подстановка «%P» представляет новое значение, которое передается в функцию валидации.

Собственно саму валидацию выполняет функция is_valid() . Она принимает один параметр — текущее значение Entry, которое надо валидировать. Она возвращает True, если значение прошло валидацию, и False, если не прошло. Сама логика валидации представляет проверку строки на регулярное выражение «^\+\d*$» . Если новое значение соответствует этому выражению, и в нем не больше 12 символов, то оно прошло валидацию.

В итоге мы сможем ввести в текстовое поле только символ + и затем только 11 цифр.

Валидация ввода в entry на tkinter в Python

Теперь немного изменим код и добавим вывод ошибок валидации:

from tkinter import * from tkinter import ttk import re def is_valid(newval): result= re.match("^\+\d$", newval) is not None if not result and len(newval) 

Здесь для вывода ошибок валидации добавлен виджет Label. Если введенное значение не соответствует регулярному выражению (например, пользователь попытался ввести нецифровой символ), и длина ввода меньше и равно 12 символов (проверять ввод больше 12 символов нет смысла, так как номер телефона содержит только 12 символов), то в метке выводим сообщение об ошибке

Валидация ввода в entry и вывод сообщения об ошибке в tkinter в Python

Также мы можем передать значение параметра validate, чтобы в функции валидации в зависимости от того, нажал пользователь на клавишу или убрал фокус с поля, производить те или иные действия. В этом случае необходимо передать команде валидации дополнительный аргумент:

check = (root.register(is_valid), "%P", "%V")

Здесь значение "%V" представляет событие, которое вызывает валидацию (focus/focusin/focusout/key). Тогда в функции валидации с помощью второго параметра мы сможем получить это значение:

def is_valid(newval, op): result= re.match("^\+\d$", newval) is not None if op=="key": # некоторые действия elif op=="focus": # некоторые действия return result

Как сделать так чтобы работали две функции от одной кнопки tkinter

Нужно сделать так что бы от одна кнопка enter выполняла две функции: 1)Если пользователь не ввёл какие-либо данные то запускала текст(это я сделал) 2)Если всё правильно, то нужно что бы всё окно очищалось и выводились другие слова(Вот в это я и не могу грамотно сделать). Потому что всегда приходится нажимать на кнопку два раза

from tkinter import * from tkinter import messagebox user_dict = <> root = Tk() class User: def __init__(self, name): self.name = name self.password = None def check(event):# Проверка наличия всех данных n = login.get() p = password.get() if n and p: text_lol.pack() text_lol.place(x = 100, y = 195) enter.bind('',next_1,next_2) if not n and p: text_not_ok_login.pack() text_not_ok_login.place(x = 20, y = 100) elif not p and n: text_not_ok_password.pack() text_not_ok_password.place(x = 20, y = 165) def next_1(event): destroy_object = [text_parc,text_login,text_password,text_not_ok_login,login,password,enter,text_not_ok_password,enter,text_lol] for object_name in destroy_object: object_name.destroy() def next_2(event): text_login2.pack() text_login2.place(x = 20, y = 50) root.geometry('300x450') root.title('Войти в cиcтему') root['bg'] = 'white' text_lol = Label(text = ' - Нажми ещё раз', font = 'Consalas 10', fg = 'black', bg = 'white') text_parc = Label(text = 'Вход в парсер', font = 'Consalas 25', fg = 'black', bg = 'white') text_login = Label(text = 'Логин', font = 'Consalas 10', fg = 'black', bg = 'white') login = Entry(root, font = 'Consalas 15', fg = 'black', bg = 'white') text_login2 = Label(text = 'Логин', font = 'Consalas 10', fg = 'black', bg = 'white') text_password = Label(text = 'Пароль', font = 'Comfortaa 10', fg = 'black', bg = 'white') password = Entry(root, font = 'Consalas 15', fg = 'black', bg = 'white',show = '*') enter = Button(text='Войти ', font = 'Consalas 15', fg = 'white', bg = '#0000FF') enter.bind('',check) text_not_ok_login = Label(text = 'Вы не ввели логин', font = 'Consalas 7', fg = 'red', bg = 'white') text_not_ok_password = Label(text = 'Вы не ввели пароль', font = 'Consalas 7', fg = 'red', bg = 'white') text_parc.pack() text_login.pack() text_parc.place(x = 20, y = 5) text_login.place(x = 20, y = 50) login.pack() login.place(x = 20, y = 70) text_password.pack() password.pack() text_password.place(x = 20, y = 115) password.place(x = 20, y = 135) enter.pack() enter.place(x = 20, y = 190) root.mainloop() 

Tkinter: кратко для начинающих

Python - один из самых лёгких и популярных языков программирования. С помощью python решается достаточно много проблем - он сможет помочь в почти любой ситуации. Сегодня речь пойдёт о встроенной библиотеке tkinter. С помощью tkinter создаётся уникальный графический интерфейс для приложения на python.

  1. Загрузка
  2. Синтаксис
  3. Компиляция

Tkinter вы можете скачать на официальном сайте или PyPi.

Загрузка

Для начала работы необходимо загрузить tkinter. Как я уже упоминал выше, он встроенный. Но встроен он начиная с версии Python3.

Загрузка для windows:

pip install tkinter pip install --update tkinter

либо на всё том же PyPi выбираете tkinter для Windows, macOS или Linux.

Синтаксис

Теперь надо разобраться с синтаксисом tkinter. Сначала импортируем:

from tkinter import *

Теперь наша задача - сделать окно приложения. Для этого выберем название приложения (у меня это My App). Запишем

from tkinter import * #исходный код if __name__ == '__main__': #выполнение кода до загрузки root = Tk() root.title('My App') #заголовок root.mainloop() #отображение окна

пояснение

Сначала мы импортировали tkinter. После него идёт исходный код - виджеты, текст и тд. После if name == 'main' в отступах идёт код, который выполняется до загрузки, тоесть первее чем код в начале (не считая импорт). Сам код, который будет дальше, пишите до. .mainloop() отвечает за отображение окна - оно обязательно должно быть в конце кода. Если вы редактируете 2 окна, нужно ставить не в конец, а в начало кода второго окна (да я "очень хорошо" объясняю)

виджеты и текст

Теперь наша задача - ввести текст. Наше окно пока что пустое. Выглядит оно так:

P.S. картинка с интернета

Чтобы добавить и редактировать текст, нужно использовать виджет Label. Давайте попробуем записать

lbl1 = Label(root, text='Привет') lbl1.grid(column=0, row=0)

Виджет Label

Row отвечает за строку, а column за столбец. Правда, у некоторых могут возникнуть проблемы в том, что вторая строка сдвинута. Для этого изменим grid на place

lbl1.place(x=10,y=10)

Нужно всего лишь указать место по x и y. Для удобства можете задать отдельный класс для управления переменными

class wid_prm(): #класс управления переменными x = 10 y1 = 10 y2 = 30 y3 = 50 x_y_z = 410 #. lbl1 = Label(root, text='. ') lbl2 = Label(root, text='. ') #плейсы lbl1.place(x=x,y=y1) lbl2.place(x=x,y=y2)

Думаю, тут всё понятно. Местоположение по x нужно использовать одно, если вы хотите использовать один столбец. Думаю, не стоит тратить время, нужно автоматизировать управление переменными x, y

for auto_prm in range(5): y1 = 10 y1 += 20 y1 -= 10 y1 -= 10 if y1 == 30: #останавливаем процесс y1 = 30 else: y2 = y1 + 20 y3 = y1 + 40 y4 = y1 + 60 y5,y6,y7,y8 = y1 * 2 + (y1 * 4) y990 = 4 if y990 > 1: x = 10 else: x = 5

А для чего это? Это для того, чтобы задать переменные автоматически. Просто скопируйте и вставьте эту часть кода в свой код.

Давайте теперь сделаем шрифт жирным в Label

lbl1 = Label(root,text='. ',font=("Times New Roman",21,"bold"))

Вы, наверное, уже поняли, что за шрифт отвечает функция font. "bold" можете убрать, если вы не хотите жирный шрифт текста. 21 - размер текста в пикселях/мм.

Теперь попробуем использовать виджет Button - добавим кнопку

btn1 = Button(root, text='Не нажимай', command=clicked) btn1.place(x=x_x,y=y1_y) def clicked(): print('Я же сказал. ')

При нажатии на кнопку будет писать определённый текст по команде clicked. Вы можете дать любое название и любое содержимое команды.

Получается, что полный код пока-что выглядит так:

from tkinter import * #импорт #исходный код class wid_prm(): #класс управления переменными x = 10 y1 = 10 y2 = 30 y3 = 50 x_y_z = 410 for auto_prm in range(5): y1 = 10 y1 += 20 y1 -= 10 y1 -= 10 if y1 == 30: #останавливаем процесс y1 = 30 else: y2 = y1 + 20 y3 = y1 + 40 y4 = y1 + 60 y5,y6,y7,y8 = y1 * 2 + (y1 * 4) y990 = 4 if y990 > 1: x = 10 else: x = 5 class prm_x_y(): x_x = 10 y1_y = 50 lbl1 = Label(root, text='. ') btn1 = Label(root, text='Не нажимай', command=clicked) def clicked(): print('Я же сказал. ') #плейсы lbl1.place(x=x,y=y1) btn1.place(x=x_x,y=y1_y) if __name__ == '__main__': root = Tk() root.title('My App') root.geometry('400x400') root.mainloop()

Виджет messagebox

Виджет messagebox позволяет создать отдельное окно с информацией. Давайте попробуем

from tkinter import * from tkinter import messagebox messagebox.showinfo('Заголовок', 'текст')

Это довольно круто для дополнительных виджетов.

Я, наверное, с синтаксисом закончу.

Компиляция

Первым делом нужно установить приложение auto-py-to-exe. Вы его можете установить либо с того же PyPi, либо через командную строку:

pip install auto-py-to-exe pip install --update auto-py-to-exe

Вы скачаете приложение auto-py-to-exe от python. Вот как оно выглядит:

auto-py-to-exe

В script location указываете путь к файлу. Вот небольшой пример:

>Path to file: >\Users\username\Desktop\file.py

Дальше всё просто. Укажите One File, если не хотите, чтобы файлы приложения засоряли ваш пк. Если хотите скрыть консоль (и оставить только окно tkinter), выберите Window Based.

Загрузите иконку приложения в Icon. И наконец-то нажимаете CONVERT .PY TO .EXE. Думаю, с последующим вы сами справитесь - в консоль будет выводиться всякая всячина, и в итоге вы успешно сконвертируете приложение на tkinter.

В этом посте я рассказал базу синтаксиса tkinter. Да, виджетов в ткинтере в разы больше, я могу их подробно расписать в следующей статье если вы захотите.

Кнопки и поле ввода tkinter

Author24 — интернет-сервис помощи студентам

Здравствуйте, четыре кнопки с числами 6, -4, 243, 5634 и поле ввода и кнопки “Дублирование” и «Закрыть». Изначально окно редактора пусто. Нажатие кнопки с числом приводит к появлению в окне редактора числа, добавляемого в начало строки. Нажатие кнопки "Дублирование" дублирует содержимое редактора на метку. Кнопка «Очистить» приводит окно редактора в исходное состояние. При достижении в редакторе строкой длины 25 символов кнопки с номерами исчезают и появляются только после нажатия кнопки «Очистить». Её нажатие возвращает систему в исходное состояние.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как сделать так, чтобы по нажатию кнопки создавался QR с текстом, который ввели в поле ввода на PYTHON?
Я могу сделать консольное приложение, есть готовый код, но не могу понять, как к кнопке и полю.

Две кнопки и поле ввода
В представленном ниже коде, кнопки очень сильно увеличивают таблицу. При уменьшении их размера или.

Вместо кнопки выводится поле ввода
пожалуйста помогите, как сделать чтобы в форме <input type="submit" name="send" value="Send"/>.

Запрет нажатия кнопки при пустом поле ввода
как сделать так чтобы кнопка не нажималась если в поле ничего не ввели? model.php /* ===.

4943 / 3294 / 1142
Регистрация: 21.03.2016
Сообщений: 8,084
спасибо за информацию
Регистрация: 17.10.2021
Сообщений: 33
имелось ввиду, что задача состоит в реализации этого на tkinter
4943 / 3294 / 1142
Регистрация: 21.03.2016
Сообщений: 8,084
и что не получается?
Регистрация: 17.10.2021
Сообщений: 33

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

4943 / 3294 / 1142
Регистрация: 21.03.2016
Сообщений: 8,084
мы должны гадать что и как вы придумали? может код выложите?
Регистрация: 17.10.2021
Сообщений: 33

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
from tkinter import * import time root = Tk() root.geometry('900x600') def clear1(): entry.delete("0","end") def close(): root.destroy() entry = Entry(width = 45) entry.pack() metka = Label(entry) metka.pack б3 =Button(text='6',width=20) б3.pack() б7 =Button(text='-4',width=20) б7.pack() б304 =Button(text='243',width=20) б304.pack() б3691 =Button(text='5634',width=20) б3691.pack() бcopy =Button(text='Дублировать',width=20) бcopy.pack() бclose =Button(text='Закрыть',width=20,command = close) бclose.pack() бclear =Button(text='Очистить',width=20,command=clear1) бclear.pack() root.mainloop()

4943 / 3294 / 1142
Регистрация: 21.03.2016
Сообщений: 8,084

ну первое что хочется сказать. создайте виджет рамки и на нем размещайте кнопки с числами. это вам поможет при условии

ЦитатаСообщение от ddla23 Посмотреть сообщение

редакторе строкой длины 25 символов кнопки с номерами исчезают и появляются только после нажатия кнопки «Очистить»

то есть достаточно скрыть рамку и скроются кнопки.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Блокировка кнопки до появления нужного значения в поле ввода.
Допустим у меня есть такой код html: <!DOCTYPE html> <html> <head> <title></title>.

Создать поле для ввода текста, радио кнопки
<!--Создать поле для ввода текста, радио кнопки, в которых указан тип шрифта и кнопку при нажатии.

Сделать текстовое поле недоступным для ввода до нажатия кнопки
Здравствуйте у меня в WinForms есть кнопка Accept и текстовое поле Edit подскажите пожалуйста.

True/False в поле ввода после нажатия кнопки Enter
Здравствуйте Помогите пожалуйста решить неисправность на web странице с java scriptom. После.

Разместите на форме три кнопки (Button) и одно поле ввода (TextBox)
Разместите на форме три кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие.

Разместите на форме две кнопки (Button) и одно поле ввода (TextBox)
Разместите на форме две кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие.

Разместите на форме две кнопки (Button) и одно поле ввода (TextBox)
Разместите на форме две кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *