Как написать экранную клавиатуру на python
У меня старая машина XP с 256 МБ, и я использую XFCE, поэтому Xubuntu, вероятно, будет вашим лучшим вариантом.
4 ответа
Вызов бортовой клавиатуры при фокусировке поля
Вы можете вызвать любую команду для включения / выключения фокуса, используя:
, где focus_in() и focus_out() - ваши функции, вызываемые фокусом в или из.
Пример
В приведенном выше примере экран клавиатура будет вызываться, если поле «testfield» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.
Вызовите клавиатуру на фокусе
Вызовите клавиатуру на фокус
Примечание
Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]
Он работал на моем ноутбуке ubuntu, однако на моем экране Udoo Neo он не делает + он вызывает ошибку дочернего исключения – Arwa Moath 15 April 2017 в 11:26 [] Traceback (последний последний вызов): Файл " /home/udooer/Desktop/SaedRobot/ScanTape.py" ;, строка 58, в подпроцессе focus_in.Popen (" onboard ") Файл " / usr / lib / python2 .7 / subprocess.py ", строка 710, в init errread, errwrite) Файл" /usr/lib/python2.7/subprocess.py" ;, строка 1327, в _execute_child raise child_exception OSError: [Errno 2] Нет такого файла или каталога – Arwa Moath 15 April 2017 в 11:51 Как я могу изменить его для запуска на python 2.7, да его ubuntu – Arwa Moath 15 April 2017 в 11:57Вызов бортовой клавиатуры при фокусировке поля
Вы можете вызвать любую команду для включения / выключения фокуса, используя:
, где focus_in() и focus_out() - ваши функции, вызываемые фокусом в или из.
Пример
В приведенном выше примере экран клавиатура будет вызываться, если поле «testfield» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.
Вызовите клавиатуру на фокусе
Вызовите клавиатуру на фокус
Примечание
Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]
Вызов бортовой клавиатуры при фокусировке поля
Вы можете вызвать любую команду для включения / выключения фокуса, используя:
, где focus_in() и focus_out() - ваши функции, вызываемые фокусом в или из.
Пример
В приведенном выше примере экран клавиатура будет вызываться, если поле «testfield» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.
Вызовите клавиатуру на фокусе
Вызовите клавиатуру на фокус
Примечание
Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]
Вызов бортовой клавиатуры при фокусировке поля
Вы можете вызвать любую команду для включения / выключения фокуса, используя:
, где focus_in() и focus_out() - ваши функции, вызываемые фокусом в или из.
Пример
В приведенном выше примере экран клавиатура будет вызываться, если поле «testfield» фокусируется, фокусируется (или фокусируется на «другом поле»), экранная клавиатура исчезнет.
Вызовите клавиатуру на фокусе
Вызовите клавиатуру на фокус
Примечание
Встроенная клавиатура имеет ряд опций, таких как макет, положение, журнал обучения, размер и т. Д. См. [F6]
Python является одним из наиболее подходящих языков для автоматизации задач. Будь то повторяемый (этический) веб-скоб через некоторое время, запуск некоторых программ при запуске компьютера или автоматизацию отправки повседневных электронных писем, Python имеет много модулей, которые облегчают вашу жизнь.
Одним из них является модуль под названием keyboard, который полностью контролирует вашу клавиатуру. С помощью данного модуля вы можете печатать что угодно, создавать горячие клавиши, сокращения, блокировать клавиатуру, ждать ввода и т. д.
В этом руководстве мы рассмотрим, как настроить и использовать модуль клавиатуры в Python.
Примечание: Приложения, работающие с автоматизацией человекоподобных процессов, должны разрабатываться этично и ответственно. Модуль клавиатуры сделан так, чтобы быть очень заметным, и, таким образом, делает его одновременно обескураживающим и прозрачным, если кто-то использует его для создания клавиатурных шпионов или вредоносных ботов.
Установка модуля клавиатуры
Версия Python, используемая в этом руководстве, равна 3.8. Однако модуль клавиатуры может работать как с Python 2.x, так и с Python 3.x.
Если вы используете Linnux, чтобы использовать эту библиотеку, вы должны установить ее от root. Если вы этого не сделаете, вы получите:
Кроме того, при запуске сценария вы должны запускать его с правами суперпользователя:
В Windows и macOS, поскольку привилегии работают совсем по-другому - вы можете установить его просто через pip и запустить сценарии:
Примечание: Для MacOS вам, возможно, придется разрешить терминалу или другим приложениям изменять состояние вашей машины, например, путем ввода текста. Также имейте в виду, что по состоянию на сентябрь 2021 года библиотека все еще находится в экспериментальном состоянии на MacOS.
Функция модуля клавиатуры
В этом модуле есть много функций, которые можно использовать для имитации действий клавиатуры.
keyboard.wait(key) - блокирует программу до тех пор, пока не будет нажата клавиша. Ключ передается в виде строки ("пробел", "esc" и т.д.)
keyboard.press(key)- нажимает клавишу и удерживается до вызова функции release(key)
keyboard.release(key)- выпускает ключ.
keyboard.send(key)- нажимает и отпускает клавишу.
keyboard.add_hotkey(hotkey, function)- создает hotkey, которая при нажатии выполняет function.
keyboard.record(key)- записывает активность клавиатуры до нажатия key.
keyboard.play(recorded_events, [speed_factor]) - воспроизводит события, записанные with keyboard.record(key) функция, с дополнительным speed_factor.
Тем не менее, мы рассмотрим все это. Вот быстрый пример:
Функции write() и wait() клавиатуры
Мы создадим бесконечный цикл True, чтобы проверить, нажата ли клавиша, и вы можете запустить сценарий в фоновом режиме:
Примечание: Специальные символы не поддерживаются этой функцией, поэтому, если вы добавите, скажем, ! - вы получите исключение остановки.
Функции клавиши press() и release()
Поскольку сложно имитировать press () и release(), чтобы действия были видны, мы также увидим в действии record() и play() .
Функция press() нажимает клавишу и отпускает ее, когда вы вызываете release() на той же клавише.
Тем не менее, вы можете удерживать некоторые специальные клавиши, такие как [SHIFT] или [CTRL] следующим образом:
Функции клавиатуры record() и play()
Речь не всегда идет о вводе новых клавиш - иногда вы хотите записать происходящий и воспроизвести это. Имейте в виду, что вам понадобятся права администратора для записи любого подобного ввода, так как технология может быть легко использована для создания кейлоггеров.
Функция record() принимает ключ запуска, до которого она записывает, и возвращает последовательность событий типа KeyboardEvent. Затем вы можете поместить эту последовательность событий в функцию play(), которая точно воспроизводит их, с дополнительным аргументом speed_factor. Он действует как множитель скорости исходных событий:
Если мы напечатаем recorded_events, они будут выглядеть примерно так:
Функция клавиатуры send()
Функция send() включает в себя press () и release () вместе и используется для отдельных клавиш, в отличие от функции write(), которая используется для целых предложений:
После нажатия клавиши s воспроизводятся клавиши w и a.
Хотя это неправильный способ добавить горячие клавиши. Также вы можете использовать функцию add_hotkey().
Функция клавиатуры add_abreviation()
Функция add_abbreviation() является довольно изящной, так как она позволяет определять сокращения для длинных входных данных и заменяет сокращенные версии сохраненными полными версиями.
Например, подобно тому, как такие службы, как Google, сохраняют вашу электронную почту для большинства форм ввода, вы можете создать свою собственную аббревиатуру и запустить ее через [SPACE]:
Во время выполнения, если вы введете @, за которым следует [ПРОБЕЛ] - ввод в длинной форме заменит введенный @.
Функция клавиатуры add_hotkey()
Функция add_hotkey() принимает горячую клавишу, которую вы хотите сохранить, или комбинацию клавиш и функцию. Здесь легко передать анонимные лямбда-функции, хотя вы также можете добавить именованные функции.
Например, давайте добавим горячую клавишу для CTRL+j, которая запускает лямбда-функцию, регистрирующей это:
Горячая клавиша ctrl + alt + p сохраняется, и при нажатии этой комбинации вы должны увидеть вывод лямбды.
Заключение
Модуль клавиатуры представляет собой легкую и простую библиотеку, используемую для моделирования нажатий клавиш и простой автоматизации в Python. Он не очень функциональный, но может быть использован для автоматизации некоторых задач, которые вы можете выполнять в своей повседневной работе, или просто для развлечения.
В этом уроке вы узнаете, как использовать модуль клавиатуры для управления клавиатурой вашего компьютера на Python, это, конечно, полезно для многих задач, таких как автоматизация различных рутинных задач рабочего стола, создание агентов обучения с подкреплением и многое другое.
Мы будем использовать модуль клавиатуры, давайте установим его:
Хорошо, откройте интерактивную оболочку Python или записную книжку/лабораторию Jupyter и следуйте инструкциям.
Сначала импортируем модуль:
Добавление горячих клавиш и сокращений
Этот модуль содержит функцию add_abbreviation() , которая позволяет нам зарегистрировать горячую клавишу, заменяющую один набранный текст другим. Например, заменим текст « @email » на адрес электронной почты « » :
Теперь выполните эту строку кода, затем откройте любой текстовый редактор и напишите « @email » с пробелом, вы увидите волшебство!
Во-вторых, вы также можете вызывать обратный вызов каждый раз, когда нажимается горячая клавиша:
Проверка нажатия кнопки
Вы также можете проверить, действительно ли нажата кнопка:
Нажатие и отпускание кнопок
Затем вы также можете имитировать нажатие клавиш с помощью функции send() :
Будет сделано нажатие и отпускание кнопки пробела. На самом деле, есть эквивалентная функция press_and_release() , которая делает то же самое.
Вы также можете передать несколько ключей:
Оператор + означает, что мы нажимаем обе кнопки одновременно. Также можно использовать многоступенчатые горячие клавиши:
Но что, если вы хотите нажать определенную клавишу, но не хотите ее отпускать? Что ж, в игру вступают функции press() и release() :
Таким образом, вы нажмете кнопку CTRL, а затем отпустите ее, а пока можете делать все, что угодно, например, поспать несколько секунд и т.д.
Но что теперь, если вы хотите написать длинный текст, а не только определенные кнопки? send() будет неэффективным. К счастью для нас, функция write() делает именно это, она отправляет в ОС искусственные события клавиатуры, имитирующие набор заданного текста, давайте попробуем:
Установка задержки на 0,1 означает 0,1 секунды ожидания между нажатиями клавиш, это будет выглядеть причудливо, как в фильмах о взломе!
Запись и воспроизведение событий на клавиатуре
С помощью этого модуля вы можете сделать еще много интересных вещей, например, записывать события клавиатуры с помощью функции record() и воспроизводить их снова с помощью функции play() :
Я передал esc методу record() для записи нажатий и отжатий клавиш до тех пор, пока я не нажму кнопку esc , а затем мы снова проиграем эти события, используя метод play() .
Вы можете изучить, что содержит список событий, просто распечатав его, или вы можете использовать get_typed_strings() для получения типизированных строк:
Вот что я напечатал:
Это напечатает все, что вы нажмете на клавиатуре, для получения дополнительной информации о том, как использовать эту функцию для создания кейлоггера в образовательных целях, ознакомьтесь с этим руководством.
Наконец, если вы хотите удалить все используемые клавиатурные перехватчики, включая горячие клавиши, сокращения и т.д.:
Заключение
Я только что представил вам модуль, пожалуйста, просмотрите документацию или просто введите help(keyboard) в интерактивной оболочке Python для изучения других функций и методов.
Вы также можете полностью управлять своей мышью, тот же автор этого модуля сделал еще один модуль для работы с мышью!
С такими модулями вы можете создавать сценарии автоматизации рабочего стола, сочетания клавиш, клавиатурные шпионы (хотя автор не несет ответственности) и многое другое!
ст. преп. кафедры ЦЭиИТ. Автор более 130 научных и учебно-методических работ. Лауреат ВДНХ (серебряная медаль). Посмотреть больше записей
В этом уроке мы узнаем, как разрабатывать графические пользовательские интерфейсы, с помощью разбора некоторых примеров графического интерфейса Python с использованием библиотеки Tkinter.
Библиотека Tkinter установлена в Python в качестве стандартного модуля, поэтому нам не нужно устанавливать что-либо для его использования. Tkinter — очень мощная библиотека. Если вы уже установили Python, можете использовать IDLE, который является интегрированной IDE, поставляемой в Python, эта IDE написана с использованием Tkinter. Звучит круто!
Мы будем использовать Python 3.7 поэтому, если вы все еще используете Python 2.x, настоятельно рекомендуем перейти на Python 3.x, если вы не в курсе нюансов изменения языка, с целью, чтобы вы могли настроить код для запуска без ошибок.
Давайте предположим, что у вас уже есть базовые знания по Python, которые помогут понять что мы будем делать.
Мы начнем с создания окна, в котором мы узнаем, как добавлять виджеты, такие, как кнопки, комбинированные поля и т. д. После этого поэкспериментируем со своими свойствами, поэтому предлагаю начать.
Создание своего первого графического интерфейса
Для начала, следует импортировать Tkinter и создать окно, в котором мы зададим его название:
Результат будет выглядеть следующим образом:
Прекрасно! Наше приложение работает.
Последняя строка вызывает функцию mainloop . Эта функция вызывает бесконечный цикл окна, поэтому окно будет ждать любого взаимодействия с пользователем, пока не будет закрыто.
В случае, если вы забудете вызвать функцию mainloop , для пользователя ничего не отобразится.
Создание виджета Label
Чтобы добавить текст в наш предыдущий пример, мы создадим lbl , с помощью класса Label , например:
Затем мы установим позицию в окне с помощью функции grid и укажем ее следующим образом:
Полный код, будет выглядеть следующим образом:
И вот как будет выглядеть результат:
Если функция grid не будет вызвана, текст не будет отображаться.
Настройка размера и шрифта текста
Вы можете задать шрифт текста и размер. Также можно изменить стиль шрифта. Для этого передайте параметр font таким образом:
Обратите внимание, что параметр font может быть передан любому виджету, для того, чтобы поменять его шрифт, он применяется не только к Label .
Отлично, но стандартное окно слишком мало. Как насчет настройки размера окна?
Настройка размеров окна приложения
Мы можем установить размер окна по умолчанию, используя функцию geometry следующим образом:
В приведенной выше строке устанавливается окно шириной до 400 пикселей и высотой до 250 пикселей.
Попробуем добавить больше виджетов GUI, например, кнопки и посмотреть, как обрабатывается нажатие кнопок.
Добавление виджета Button
Начнем с добавления кнопки в окно. Кнопка создается и добавляется в окно так же, как и метка:
Наш код будет выглядеть вот так:
Результат будет следующим:
Обратите внимание, что мы помещаем кнопку во второй столбец окна, что равно 1. Если вы забудете и поместите кнопку в том же столбце, который равен 0, он покажет только кнопку.
Изменение цвета текста и фона у Button
Вы можете поменять цвет текста кнопки или любого другого виджета, используя свойство fg .
Кроме того, вы можете поменять цвет фона любого виджета, используя свойство bg .
Теперь, если вы попытаетесь щелкнуть по кнопке, ничего не произойдет, потому что событие нажатия кнопки еще не написано.
Кнопка Click
Для начала, мы запишем функцию, которую нужно выполнить при нажатии кнопки:
Затем мы подключим ее с помощью кнопки, указав следующую функцию:
Обратите внимание: мы пишем clicked , а не clicked() с круглыми скобками. Теперь полный код будет выглядеть так:
При нажатии на кнопку, результат, как и ожидалось, будет выглядеть следующим образом:
Круто!
Получение ввода с использованием класса Entry (текстовое поле Tkinter)
В предыдущих примерах GUI Python мы ознакомились со способами добавления простых виджетов, а теперь попробуем получить пользовательский ввод, используя класс Tkinter Entry (текстовое поле Tkinter).
Вы можете создать текстовое поле с помощью класса Tkinter Entry следующим образом:
Затем вы можете добавить его в окно, используя функцию grid .
Наше окно будет выглядеть так:
Во-первых, вы можете получить текст ввода, используя функцию get . Мы можем записать код для выбранной функции таким образом:
Запустите вышеуказанный код и проверьте результат:
Прекрасно!
Каждый раз, когда мы запускаем код, нам нужно нажать на виджет ввода, чтобы настроить фокус на ввод текста, но как насчет автоматической настройки фокуса?
Установка фокуса виджета ввода
Здесь все очень просто, ведь все, что нам нужно сделать, — это вызвать функцию focus :
Когда вы запустите свой код, вы заметите, что виджет ввода в фокусе, который дает возможность сразу написать текст.
Отключить виджет ввода
Чтобы отключить виджет ввода, отключите свойство состояния:
Теперь вы не сможете ввести какой-либо текст.
Добавление виджета Combobox
Чтобы добавить виджет поля с выпадающем списком, используйте класс Combobox из ttk следующим образом:
Затем добавьте свои значения в поле со списком.
Как видите с примера, мы добавляем элементы combobox , используя значения tuple .
Чтобы установить выбранный элемент, вы можете передать индекс нужного элемента текущей функции.
Чтобы получить элемент select , вы можете использовать функцию get вот таким образом:
Добавление виджета Checkbutton (чекбокса)
С целью создания виджета checkbutton , используйте класс Checkbutton :
Кроме того, вы можете задать значение по умолчанию, передав его в параметр var в Checkbutton :
Посмотрите на результат:
Установка состояния Checkbutton
Здесь мы создаем переменную типа BooleanVar , которая не является стандартной переменной Python, это переменная Tkinter, затем передаем ее классу Checkbutton , чтобы установить состояние чекбокса как True в приведенном выше примере.
Вы можете установить для BooleanVar значение false, что бы чекбокс не был отмечен.
Так же, используйте IntVar вместо BooleanVar и установите значения 0 и 1.
Эти примеры дают тот же результат, что и BooleanVar .
Добавление виджетов Radio Button
Чтобы добавить radio кнопки, используйте класс RadioButton :
Обратите внимание, что вы должны установить value для каждой radio кнопки с уникальным значением, иначе они не будут работать.
Результатом вышеприведенного кода будет следующий:
Кроме того, вы можете задать command любой из этих кнопок для определенной функции. Если пользователь нажимает на такую кнопку, она запустит код функции.
Вот пример:
Получение значения Radio Button (Избранная Radio Button)
Чтобы получить текущую выбранную radio кнопку или ее значение, вы можете передать параметр переменной и получить его значение.
Каждый раз, когда вы выбираете radio button, значение переменной будет изменено на значение кнопки.
Добавление виджета ScrolledText (текстовая область Tkinter)
Чтобы добавить виджет ScrolledText , используйте класс ScrolledText :
Здесь нужно указать ширину и высоту ScrolledText , иначе он заполнит все окно.
Результат:
Настройка содержимого Scrolledtext
Используйте метод insert , чтобы настроить содержимое Scrolledtext :
Удаление/Очистка содержимого Scrolledtext
Чтобы очистить содержимое данного виджета, используйте метод delete :
Чтобы показать всплывающее окно с помощью Tkinter, используйте messagebox следующим образом:
Когда вы нажмете на кнопку, появится информационное окно.
Показ диалоговых окон с выбором варианта
Если вы кликнете OK, yes или retry, значение станет True, а если выберете no или cancel, значение будет False.
Единственной функцией, которая возвращает одно из трех значений, является функция askyesnocancel ; она возвращает True/False/None.
Добавление SpinBox (Виджет спинбокс)
Для создания виджета спинбокса, используйте класс Spinbox :
Таким образом, мы создаем виджет Spinbox , и передаем параметры from и to , чтобы указать диапазон номеров.
Кроме того, вы можете указать ширину виджета с помощью параметра width :
Проверим пример полностью:
Вы можете указать числа для Spinbox , вместо использования всего диапазона следующим образом:
Виджет покажет только эти 3 числа: 3, 8 и 11.
Задать значение по умолчанию для Spinbox
В случае, если вам нужно задать значение по умолчанию для Spinbox, вы можете передать значение параметру textvariable следующим образом:
Теперь, если вы запустите программу, она покажет 36 как значение по умолчанию для Spinbox.
Добавление виджета Progressbar
Чтобы создать данный виджет, используйте класс progressbar :
Установите значение progressbar таким образом:
Вы можете установить это значение на основе любого процесса или при выполнении задачи.
Изменение цвета Progressbar
Изменение цвета Progressbar немного сложно. Сначала нужно создать стиль и задать цвет фона, а затем настроить созданный стиль на Progressbar. Посмотрите следующий пример:
И в результате вы получите следующее:
Добавление поля загрузки файла
Для добавления поля с файлом, используйте класс filedialog :
После того, как вы выберете файл, нажмите “Открыть”; переменная файла будет содержать этот путь к файлу. Кроме того, вы можете запросить несколько файлов:
Указание типа файлов (расширение фильтра файлов)
Возможность указания типа файлов доступна при использовании параметра filetypes , однако при этом важно указать расширение в tuples.
Вы можете запросить каталог, используя метод askdirectory :
Вы можете указать начальную директорию для диалогового окна файла, указав initialdir следующим образом:
Добавление панели меню
Для добавления панели меню, используйте класс menu :
Сначала мы создаем меню, затем добавляем наш первый пункт подменю. Вы можете добавлять пункты меню в любое меню с помощью функции add_cascade() таким образом:
Наш код будет выглядеть так:
Таким образом, вы можете добавить столько пунктов меню, сколько захотите.
Теперь мы добавляем еще один пункт меню “Изменить” с разделителем меню. Вы можете заметить пунктирную линию в начале, если вы нажмете на эту строку, она отобразит пункты меню в небольшом отдельном окне.
Можно отключить эту функцию, с помощью tearoff подобным образом:
Просто отредактируйте new_item , как в приведенном выше примере и он больше не будет отображать пунктирную линию.
Вы так же можете ввести любой код, который работает, при нажатии пользователем на любой элемент меню, задавая свойство команды.
Добавление виджета Notebook (Управление вкладкой)
Для удобного управления вкладками реализуйте следующее:
- Для начала, создается элемент управления вкладкой, с помощью класса Notebook .
- Создайте вкладку, используя класс Frame .
- Добавьте эту вкладку в элемент управления вкладками.
- Запакуйте элемент управления вкладкой, чтобы он стал видимым в окне.
Таким образом, вы можете добавлять столько вкладок, сколько нужно.
Добавление виджетов на вкладку
После создания вкладок вы можете поместить виджеты внутри этих вкладок, назначив родительское свойство нужной вкладке.
Добавление интервала для виджетов (Заполнение)
Вы можете добавить отступы для элементов управления, чтобы они выглядели хорошо организованными с использованием свойств padx и pady .
Передайте padx и pady любому виджету и задайте значение.
Это очень просто!
В этом уроке мы увидели много примеров GUI Python с использованием библиотеки Tkinter. Так же рассмотрели основные аспекты разработки графического интерфейса Python. Не стоит на этом останавливаться. Нет учебника или книги, которая может охватывать все детали. Надеюсь, эти примеры были полезными для вас.
В этом руководстве мы научимся разрабатывать графические интерфейсы пользователя (GUI), написав несколько примеров GUI на Python с использованием пакета Tkinter.
Пакет Tkinter включен в Python как стандартный, поэтому вам не нужно ничего устанавливать для его использования.
Я предполагаю, что у вас есть некоторые базовые знания Python, которые помогут вам понять, что мы делаем.
Мы начнем с создания окна, затем научимся добавлять виджеты, такие как кнопки, комбобоксы и т.д., а затем поиграем с их свойствами. Итак, поехали.
Создайте свое первое приложение с графическим интерфейсом
Сначала мы импортируем пакет Tkinter, создадим окно и зададим его заголовок:
Невероятно! Наше приложение работает.
Последняя строка вызывает функцию mainloop. Эта функция запускает бесконечный цикл окна, поэтому оно будет открыто, пока мы его сами не закроем.
Если вы забудете вызвать функцию mainloop, пользователю ничего не будет показано.
Создание виджета label
Чтобы добавить метку к нашему предыдущему примеру, мы создадим ее с помощью класса label:
Затем мы установим его положение с помощью функции grid вот так:
Итоговый код будет выглядеть следующим образом:
Без вызова функции grid для label метка не появится.
Установка размера шрифта метки
Вы можете настроить шрифт метки, чтобы сделать его более крупным или, возможно, жирным. Кроме того, можно изменить стиль шрифта.
Для этого передайте дополнительный параметр font:
Следует отметить, что параметр font может быть передан любому виджету для изменения его шрифта, а не только меткам.
Все замечательно. Но окно настолько маленькое, что мы даже не видим заголовок. Как установить размер окна?
Установка размера окна
Мы можем установить размер окна по умолчанию, используя функцию geometry:
Приведенная выше строка устанавливает ширину окна в 350 пикселей и высоту в 200 пикселей.
Давайте попробуем добавить больше виджетов в виде кнопок и посмотрим, как обрабатывать событие нажатия на кнопку.
Добавление виджета кнопки
Давайте начнем с добавления кнопки на окно. Кнопка создается и добавляется так же, как и метка:
В результате код будет выглядеть следующим образом:
Результат будет выглядеть так:
Обратите внимание, что мы размещаем кнопку во втором столбце окна, то есть в столбце 1. Если забыть об этом и поместить кнопку в тот же столбец (в данном случае 0), то будет отображаться только кнопка, так как кнопка будет находиться над меткой.
Изменение цвета фона и шрифта кнопки.
Вы можете изменить цвет текста кнопки или любого другого виджета с помощью свойства fg.
Также с помощью свойства bg можно изменить цвет фона любого виджета.
Сейчас, если вы попытаетесь нажать на кнопку, ничего не произойдет, потому что событие нажатия кнопки еще не задано.
Обработка события нажатия кнопки
Сначала мы напишем функцию, которая должна выполняться при нажатии на кнопку:
Затем мы свяжем её с кнопкой, указав функцию следующим образом:
Обратите внимание, что мы пишем просто clicked, а не clicked() со скобками.
Теперь весь код будет выглядеть следующим образом:
Когда мы жмем на кнопку, то получаем нужный результат:
Ввод данных с помощью класса Entry (текстовое поле Tkinter)
В предыдущих примерах графического интерфейса Python мы рассмотрели, как добавлять простые виджеты. Теперь давайте попробуем получить данные от пользователя, используя класс Tkinter Entry (текстовое поле Tkinter).
Вы можете создать текстовое поле с помощью класса Tkinter Entry следующим образом:
Далее вы можете добавить виджет в окно с помощью функции grid, как и раньше.
Наш код будет выглядеть так::
Результат будет следующим:
Мы можем получить введенный текст с помощью функции get. Затем мы можем добавить его в нашу функцию clicked, например, так:
Запустите приведенный выше код и проверьте результат:
Каждый раз, когда мы запускаем код, мы должны кликнуть на виджет ввода, чтобы установить фокус для написания текста. Давайте попробуем установить фокус автоматически?
Установка фокуса на виджете ввода
Это очень просто, все, что нам нужно сделать, это вызвать функцию focus:
Отключение виджета ввода
Чтобы отключить виджет ввода, можно установить свойство state в значение disabled:
Теперь вы больше не можете вводить никакой текст.
Добавление виджета combobox
Чтобы добавить виджет combobox, можно использовать класс Combobox из библиотеки ttk, как показано ниже:
Затем вы можете добавить значения в список.
Как вы видите, мы добавляем элементы combobox, используя кортеж значений.
Чтобы установить выбранный элемент, можно передать индекс нужного элемента функцию current.
Чтобы получить выбранный элемент, можно использовать функцию get, как показано ниже:
Добавление виджета Checkbutton (Tkinter checkbox)
Чтобы создать виджет Checkbutton, вы можете использовать класс Checkbutton:
Установка состояния Checkbutton
Здесь мы создаем переменную типа BooleanVar, которая не является стандартной переменной Python, это переменная Tkinter. Затем мы передаем его в класс Checkbutton для установки состояния галочки, как показано выше. Вы можете установить булево значение false, чтобы отключить отметку.
Также вы можете использовать IntVar вместо BooleanVar и установить значение 0 или 1.
Добавление виджета radio button
Чтобы их добавить, вы можете использовать класс RadioButton, как показано ниже:
Обратите внимание, что вы должны установить для каждой радиокнопки свое значение, иначе они не будут работать.
Результат выполнения приведенного выше кода выглядит следующим образом:
Кроме того, вы можете установить команду любой из этих радиокнопок на определенную функцию, так что если пользователь нажмет на любую из них, она выполнит код назначенной функции.
Все очень просто!
Получить значение радиокнопки (выбранный вариант)
Чтобы получить текущую выбранную радиокнопку или значение радиокнопки, вы можете передать радиокнопкам параметр variable, а затем взять его значение.
Добавление виджета ScrolledText (Tkinter textarea)
Чтобы добавить виджет ScrolledText, вы можете использовать класс ScrolledText, как показано ниже:
Мы указываем ширину и высоту виджета, иначе он заполнит все окно.
Установка содержимого scrolledtext.
Чтобы задать содержимое у scrolledtext, можно использовать метод insert, как показано ниже:
Удаление/очистка содержимого scrolledtext
Чтобы удалить содержимое виджета с прокруткой текста, можно использовать метод delete, как показано ниже:
Создание MessageBox
Отображение диалоговых окон с вопросами и ответами
Вы также можете проверить, какую кнопку нажал пользователь, используя переменную result.
Единственной функцией, которая возвращает одно из трех значений, является функция askyesnocancel , которая возвращает True, False или None .
Добавление SpinBox (виджет чисел)
Чтобы создать данный виджет, вы можете использовать класс Spinbox, как показано ниже:
Здесь мы создаем виджет Spinbox и передаем параметры from_ и to, чтобы указать диапазон чисел для Spinbox.
Кроме того, вы можете указать ширину виджета с помощью параметра width:
Давайте посмотрим весь пример:
Вы можете указать числа для Spinbox вместо использования всего диапазона, например, так:
В результате виджет Spinbox покажет только 3 числа: 3, 8 и 11.
Установка значения по умолчанию для Spinbox
Чтобы установить значение по умолчанию для Spinbox, вы можете передать его в параметр textvariable, как показано ниже:
Теперь, если вы запустите программу, Spinbox отобразит значение по умолчанию 36.
Добавление виджета Progressbar
Чтобы создать прогресс-бар, вы можете использовать класс progressbar, как показано ниже:
Значение шкалы можно задать следующим образом:
Вы можете установить это значение в соответствии с нужным вам процессом, например, загрузкой файла или выполнением задачи.
Изменение цвета Progressbar
Изменение цвета прогрессбара сначала кажется немного сложным, но на самом деле это очень просто.
Посмотрите следующий пример:
Результат будет выглядеть так:
Окно добавления файла (выбор файла и каталога).
Для создания такого окна вы можете использовать класс filedialog, как показано ниже:
После выбора файла и нажатия кнопки открыть, в переменной будет указан путь к файлу.
Вы также можете выбрать несколько файлов:
Указание типов файлов (фильтр по расширению)
Вы можете указать типы файлов с помощью параметра filetypes, который задает расширение в кортежах.
Директорию можно получить с помощью метода askdirectory:
Вы можете указать начальный каталог, указав initialdir:
Добавление меню
Чтобы добавить меню, вы можете использовать класс menu:
Сначала мы создадим меню. Затем мы добавляем нашу первую метку. После этого мы назначаем меню окну.
Вы можете добавить пункты в любое меню с помощью функции add_cascade(), например, так:
Наш код будет выглядеть так:
Вы можете добавить столько пунктов, сколько захотите.
Вы можете отключить пунктирную линию в верхней части выпадающего списка:
Вы можете написать любой код, который срабатывает при нажатии пользователем на любой пункт меню, указав свойство command.
Добавление виджета Notebook (элемент управления вкладками)
Чтобы создать блок управления вкладками, необходимо выполнить три шага.
- Сначала создадим блок управления вкладками с помощью класса Notebook
- Создадим вкладку с помощью класса Frame.
- Добавим вкладку в блок управления вкладками.
- Расположим блок управления вкладками так, чтобы он отображался в окне.
Вы можете добавить столько вкладок, сколько захотите.
Добавление виджетов на вкладки
После создания вкладок вы можете разместить виджеты внутри них, назначив родительское свойство нужной вкладке.
Добавление отступов у виджетов (spacing или padding)
Вы можете добавить отступы элементам, чтобы они выглядели красиво скомпонованными, используя свойства padx и pady.
Просто передайте padx и pady любому виджету и присвойте им значение.
В этом руководстве мы рассмотрели множество примеров графических интерфейсов Python, использующих библиотеку Tkinter, и увидели, насколько просто разрабатывать GUI с ее помощью.
Надеюсь, эти примеры будут вам полезны.
Сохраните статью в социальных сетях, чтобы не потерять.Похожие записи
Сравнивать даты в Python очень просто. Для этого достаточно использовать операторы сравнения. В этой статье…
В этой статье о Python мы рассмотрим, как получить наименьшее общее кратное (НОК) двух чисел.…
Читайте также: