Python как открыть новое окно

Содержание
  1. Всплывающие окна / tkinter 11
  2. Открыть другое окно
  3. Как работают всплывающие окна
  4. Обработка закрытия окна
  5. Как работает проверка закрытия окна
  6. Передача переменных между окнами
  7. Изучение Графический пользовательский интерфейс Python (Tkinter Tutorials)
  8. Создание первого графического интерфейса
  9. Создание виджета Label
  10. Настройка шрифта и размера текста
  11. Установка размера окна приложения
  12. Добавление виджета кнопки
  13. Измените цвет текста и фона окна the button
  14. Нажмите кнопку
  15. Получение ввода с помощью класса Entry (Tkinter TextBox)
  16. Установка фокуса виджета ввода
  17. Отключить виджет ввода
  18. Добавить виджет ComboBox
  19. Добавить виджет кнопки-флажка (флажок)
  20. Установите состояние кнопки проверки
  21. Добавление переключаемых виджетов
  22. Получение значения переключателя (любимого переключателя)
  23. Добавьте виджет ScrolledText (текстовая область Tkinter )
  24. Установите содержимое прокручиваемого текста
  25. Удалить/очистить смещенный текст
  26. Создать всплывающее окно сообщения
  27. Отображение предупреждений и сообщений об ошибках
  28. Показать диалоговые окна параметров
  29. Добавьте SpinBox (виджет Spinbox)
  30. Установите значение по умолчанию для Spinbox
  31. Добавьте progressbar в виджет Spinbox
  32. Изменение цвета индикатора выполнения
  33. Добавить поле загрузки файла
  34. Укажите тип файлов (расширение фильтра files)
  35. Добавление строки меню
  36. Добавить виджет «Блокнот» (вкладка «Управление»)
  37. Добавление виджетов на вкладку
  38. Добавить место для виджетов (отступы)

Всплывающие окна / tkinter 11

Открыть другое окно

Корневой экземпляр Tk — это главное окно графического интерфейса. Когда он уничтожается, приложение закрывается, и основной цикл завершается.

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

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

Класс виджета верхнего уровня создает новое окно верхнего уровня, которое действует как родительский контейнер, похожий на экземпляр Tk. В отличие от класса Tk, вы можете создавать неограниченное количество окон верхнего уровня:

Как работают всплывающие окна

Определите подкласс верхнего уровня, который будет настраиваемым окном. Его отношение к родителю будет определено в методе __init__. Виджеты добавляются в это окно обычным способом:

Окно открывается путем создания нового экземпляра, но для того, чтобы оно получало все события, необходимо вызвать его метод grab_set. Это предотвращает взаимодействие пользователей с родительским окном до тех пор, пока не будет закрыто дочернее окно:

Обработка закрытия окна

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

Мы будем использовать повторно класс приложения из предыдущего примера, но мы изменим класс окна так, чтобы перед закрытием:

В Tkinter вы можете указать, когда окно должно быть закрыто, используя функцию-обработчик для протокол WM_DELETE_WINDOW . Для большинства настольных программ его можно запустить, щелкнув значок «x» на верхней панели.

Этот метод манипулирования отобразит диалоговое окно для подтверждения удаления окна. В более сложных программах логика часто включает дополнительную проверку.

Как работает проверка закрытия окна

Метод bind() используется для регистрации обработчиков событий виджета, а метод bind() регистрирует делает то же самое для журналов управления окнами.

Обработчик WM_DELETE_WINDOW вызывается, когда окно верхнего уровня уже должно быть закрыто, и по умолчанию Tk уничтожает окно, для которого оно было получено. Поскольку обработчик commit_delete подавляет такое поведение, вы должны явно уничтожить окно при фиксации.

Еще один полезный протокол — WM_TAKE_FOCUS. Вызывается, когда окно имеет фокус.

Это стоит того. Обратите внимание, что для сохранения фокуса на дочернем окне, когда диалоговое окно открыто, вы должны передать ссылку на экземпляр верхнего уровня в родительском параметре диалогового окна. function:

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

Передача переменных между окнами

Иногда для передачи требуется два разных окна. информацию во время работы программы. Его можно сохранить на диск и прочитать в нужном окне, но в некоторых случаях удобнее обработать в памяти и передать как переменную.

Читайте также:  Графический интерфейс как открыть

Главное окно будет содержать три кнопки для выбора типа пользователя, а второй будет содержать форму для заполнения ваших данных:

Для хранения данных пользователя мы создаем именованный кортеж с полями, представляющими экземпляр каждого пользователя . Эта функция модуля коллекции принимает имя типа и последовательность имен полей и возвращает подкласс кортежа для создания простого объекта с заданными полями:

Источник

Изучение Графический пользовательский интерфейс Python (Tkinter Tutorials)

В этом учебном пособии мы узнаем, как разрабатывать графические пользовательские интерфейсы, используя несколько примеров графического интерфейса Python с использованием библиотеки Tkinter.

Библиотека Tkinter устанавливается как стандартный модуль в Python, поэтому для ее использования нам не нужно ничего устанавливать. Tkinter — очень мощная библиотека. Если у вас уже установлен Python, вы можете использовать IDLE, встроенную среду разработки, поставляемую с Python. Эта среда разработки написана с использованием Tkinter. Звучит здорово!

Мы будем использовать Python 3.7, поэтому, если вы все еще используете Python 2.x, мы настоятельно рекомендуем перейти на Python 3.x, если только вы не знакомы с нюансами смены языка. ​так что вы можете настроить свой код так, чтобы он работал без ошибок.

Мы предполагаем, что у вас уже есть базовые знания Python, которые помогут вам понять, что мы собираемся делать.
Начнем с создания окна, в котором мы узнаем, как добавлять виджеты, такие как кнопки, поля со списком и т. д. Затем мы поэкспериментируем с нашими свойствами, поэтому я рекомендую приступить к работе.

Создание первого графического интерфейса

Сначала нам нужно импортировать Tkinter и создать окно, дать ему и заголовок:

Результат будет выглядеть так:
Отлично! Наше приложение работает.
Последняя строка вызывает функцию mainloop. Эта функция заставит окно зацикливаться навсегда, поэтому окно будет ждать любого взаимодействия с пользователем, пока оно не будет закрыто.

Если вы забудете вызвать функцию mainloop, пользователю ничего не будет показано.

Создание виджета Label

Чтобы добавить текст в наш предыдущий пример, мы создаем lbl с помощью класса Label, например:

Затем мы устанавливаем положение окна с помощью функции сетки и укажите это так:

Полный код будет выглядеть так:

И результат будет выглядеть так:
Если функция сетки не вызывается, текст не будет будет отображаться.

Настройка шрифта и размера текста

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

Обратите внимание, что параметр шрифта можно передать любому виджету, а не только тегу, чтобы изменить его шрифт.

Круто, но стандартное окно слишком маленькое. Как насчет настройки размера окна?

Установка размера окна приложения

Мы можем установить размер окна по умолчанию, используя функцию геометрии следующим образом:

Строка выше устанавливает размер окна до 400 пикселей в ширину и 250 пикселей на height.

Давайте попробуем добавить другие виджеты GUI, такие как кнопки, и посмотрим, как обрабатываются нажатия кнопок.

Добавление виджета кнопки

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

Наш код будет выглядеть так:

Результатом будет:
Обратите внимание, что вы поместите кнопку во второй столбец окна, который равен 1. Если вы забыли, поместите кнопку в тот же столбец, который равен 0, будет отображаться только кнопка.

Измените цвет текста и фона окна the button

Вы можете использовать свойство fg для изменения цвета текста кнопки или любого другого виджета.
Вы также можете изменить цвет фона любого виджета, используя свойство bg.

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

Нажмите кнопку

Сначала мы пишем функцию, которая будет запускаться при нажатии кнопки:

Затем мы активируем ее с помощью кнопки, определяющей следующую функцию:

Читайте также:  Как легко получить таз святого

Обратите внимание: в скобках мы пишем clicked, а не clicked(). Теперь весь код будет выглядеть так:

Нажатие кнопки будет выглядеть так, как и ожидалось:
Отлично!

Получение ввода с помощью класса Entry (Tkinter TextBox)

В предыдущих примерах Python с графическим интерфейсом мы видели, как добавлять простые виджеты, теперь давайте попробуем получить пользовательский ввод с помощью класса ввода Tkinter (текстовое поле Tkinter).
Вы можете создать текстовое поле с Классы Tkinter Entry выглядят следующим образом:

Затем вы можете добавить их в окно, используя функцию сетки.
Наше окно будет выглядеть так:

Результат будет выглядеть так:
Теперь при нажатии на кнопку появится то же сообщение, что и выше, а как насчет отображения текста ввести в виджет ввода?

Во-первых, вы можете получить текст с помощью функции get. Мы можем написать код для выбранной функции следующим образом:

Если вы нажмете на кнопку, текст «Привет» появится вместе с текстом, введенным в виджет ввода. Вот полный код:

Запустите приведенный выше код и проверьте результат:
Отлично!

Каждый раз, когда мы запускаем код, нам нужно нажимать на ввод виджета. установите фокус на ввод текста, но как насчет автоматической настройки фокуса?

Установка фокуса виджета ввода

Здесь все очень просто, все, что нам нужно сделать, это вызвать функцию фокуса:

Когда вы запустите код, вы заметите, что виджет ввода имеет фокус, что позволяет сразу же вводить текст.

Отключить виджет ввода

Чтобы отключить виджет ввода, отключить свойство состояния:

Вы больше не сможете вводить текст.

Добавить виджет ComboBox

Чтобы добавить виджет Combobox, используйте ttk Combobox следующим образом:

Затем добавьте свои значения в поле со списком.

Как вы можете видеть в примере, мы добавляем элементы фрейма, объединенные с использованием значений кортежа.
Чтобы установить выбранный элемент, вы можете передать индекс нужного элемента в текущую функцию.
Вы можете использовать функцию для получения выбранного элемента получить примерно так:

Добавить виджет кнопки-флажка (флажок)

Чтобы создать виджет-флажок, используйте класс CheckButton:

Кроме того, вы можете установить значение по умолчанию с помощью передавая параметр var на флажке. check:

Посмотрите на результат:

Установите состояние кнопки проверки

Здесь мы создаем переменную типа BooleanVar, которая не стандартная переменная Python, это переменная Tkinter, затем передайте ее классу Checkbutton, чтобы установить состояние флажка в True в приведенном выше примере.

BooleanVar вы можете установить значение false, чтобы флажок не был отмечен.
Также используйте IntVar вместо BooleanVar и установите значения 0 и 1.

Эти примеры дают тот же результат, что и BooleanVar .

Добавление переключаемых виджетов

Чтобы добавить переключатели, используйте класс RadioButton:

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

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

Получение значения переключателя (любимого переключателя)

Чтобы получить текущий выбранный переключатель или его значение, вы можете передать параметр в переменная и получите значение.

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

Добавьте виджет ScrolledText (текстовая область Tkinter )

Хотите- для добавления виджета ScrolledText используйте класс ScrolledText:

Здесь нужно указать ширину и высоту прокручиваемого текста; в противном случае он займет все окно.

Результат:

Установите содержимое прокручиваемого текста

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

Удалить/очистить смещенный текст

Чтобы очистить содержимое этого виджета, используйте метод удаления:

Создать всплывающее окно сообщения

Чтобы отобразить всплывающее окно с помощью Tkinter, используйте это:

Довольно просто! Когда пользователь нажимает кнопку, появляется окно сообщения.

При нажатии кнопки появляется информационное окно.

Отображение предупреждений и сообщений об ошибках

Таким же образом вы можете отобразить предупреждающее сообщение или сообщение об ошибке. Единственное, что нужно изменить, это функцию сообщения.

Показать диалоговые окна параметров

Чтобы показать пользователю сообщение да/нет, вы можете использовать одну из следующих функций диалога: сообщения :

Читайте также:  Redmi airdots как открыть наушник

Вы можете выбрать подходящий стиль сообщения в соответствии с вашими потребностями. Просто замените строку функции showinfo на одну из приведенных выше и запустите скрипт. Вы также можете проверить, какая кнопка нажата, используя переменную результата.

Если вы нажмете OK , да или повторить , значение изменится на True и если вы нажмете вместо или отменить , значение будет False .
Единственная функция, которая возвращает одно из трех значений, — это askyesnocancel; возвращает True/False/None .

Добавьте SpinBox (виджет Spinbox)

Чтобы создать виджет Spin Box, используйте класс Spin Box:

Итак, мы создаем виджет Spinbox и передать параметры из, чтобы определить диапазон чисел.
Кроме того, вы можете указать ширину виджета с помощью параметра ширины:

См. полный пример:

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

Виджет будет отображать только эти 3 числа: 3, 8 и 11.

Установите значение по умолчанию для Spinbox

Если вам нужно установить значение по умолчанию значение для Spinbox, вы можете передать значение параметра в текстовую переменную следующим образом:

Теперь, когда вы запускаете программу, она покажет 36 как значение по умолчанию для Spinbox.

Добавьте progressbar в виджет Spinbox

Используйте класс progressbar для создания этого виджета:

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

Вы можете установить это значение на основе любого процесса или задачу.

Изменение цвета индикатора выполнения

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

В результате вы получите следующее:

Добавить поле загрузки файла

Чтобы добавить поле файла, используйте диалоговое окно файла класса:

После выбора файла нажмите «Открыть»; файловая переменная будет содержать этот путь к файлу. Кроме того, вы можете запросить несколько файлов:

Укажите тип файлов (расширение фильтра files)

Возможность указать тип файлов доступна при использовании файлов параметров filetype, однако важно указать расширение в никах.

Вы можете запросить каталог с помощью метода askdirectory :

Initial вы можете указать каталог для диалогового окна файла, указав начальный каталог следующим образом:

Добавление строки меню

Чтобы добавить строку меню, используйте класс меню:

Сначала мы создаем меню, затем добавляем первый элемент подменю. Вы можете добавить пункты меню в любое меню, используя функцию add_cascade() следующим образом:

Наш код будет выглядеть следующим образом:

Вы можете добавить столько пунктов меню, сколько захотите. way

Теперь добавим еще один пункт меню «Правка» с разделителем меню. Вы можете заметить пунктирную линию в начале, если вы нажмете на эту линию, пункты меню появятся в небольшом отдельном окне.

Вы можете отключить эту функцию с помощью вырезок следующим образом:

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

Добавить виджет «Блокнот» (вкладка «Управление»)

Для удобного управления вкладками, реализовать следующее:

  • Сначала создается элемент управления вкладками с использованием класса Notebook.
  • Создайте карточку с помощью класса Frame.
  • Добавьте эту вкладку в панель управления вкладками.
  • Исправить управление картой чтобы было видно в окно.

Таким образом вы можете добавить столько вкладок, сколько захотите.

Добавление виджетов на вкладку

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

Добавить место для виджетов (отступы)

Вы можете добавить отступы к элементам управления, чтобы чтобы они выглядели красиво, используя свойства padx и pads.

Передайте padx и pads любому виджету и установите значение.

Это так просто!

В В этом руководстве мы видели много примеров использования библиотеки графического интерфейса Python Tkinter. Мы также рассмотрим основные аспекты разработки графического интерфейса Python. Вы не должны останавливаться на достигнутом. Не существует руководства или книги, которая могла бы охватить все детали. Я надеюсь, что вы нашли эти примеры полезными.

Источник

Поделиться с друзьями
Решатор