Как сделать незакрываемое окно в python

Добавил пользователь Дмитрий К.
Обновлено: 18.09.2024

Многие программы на сегодняшний день используют графический интерфейс, который более интуитивен и удобен для пользователя, чем консоль. И с помощью языка программирования Python также можно создавать графические программы. Для этого в Python по умолчанию применяется специальный toolkit - набор компонентов, который называется tkinter .

Библиотека tkinter доступна в виде отдельного встроенного модуля, который содержит все необходимые графические компоненты - кнопки, текстовые поля и т.п.

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

Для создания графического окна применяется конструктор Tk() , который определен в модуле tkinter . Создаваемое окно присваивается переменной root , и через эту переменную мы можем управлять атрибутами окна. Вместо комментария '''any code''' добавляются все необходимые компоненты окна.

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

В результате при запуске скрипта мы увидим такое пустое окошко:

C помощью метода title() можно установить заголовок окна.

По умолчанию окно позиционируется в верхний левый угол экрана. Но мы можем изменить его положение, передав нужные значения в метод geometry() :

Создайте 4 окна с заголовками окон: "Top", "Bottom", "Right", "Left". Разместить окна по сторонам рабочего стола:

  • вверх по центру,
  • низ по центру,
  • право по центру,
  • лево по центру.

Создайте 4 окна с заголовками окон: "Top-right", "Top-left", "Bottom-right", "Bottom-left". Разместить 4 окна по углам рабочего стола.

Создайте окно, появляющееся в центре экрана, с заголовком "Center".

Текстовые и другие редакторы в заголовках программы указывают имя "активного файла - название программы".

  • Создайте окно с заголовком в виде f-строки, в котором указывается имя разработчика, название и версия программы;
  • Имя и версия программы хранятся в отдельных переменных;
  • Пример вывода заголовка: "Bob's programm - Empty v.01"

Иконки окон не отображаются в системах MacOS, задача только для Windows: Найдите в интернете, как в tkinter сменить иконку, отображаемую в левом верхнем углу окна. И замените её, на любую другую иконку, которую можно скопировать из интернета или создать самому. Картинка для иконки обязательно должна иметь расширение .ico .

Как мне обрабатывать событие закрытия окна (нажатие кнопки "X" ) в программе Python Tkinter?

ОТВЕТЫ

Ответ 1

Tkinter поддерживает механизм, называемый обработчики протоколов. Здесь термин "протокол" относится к взаимодействию между приложением и диспетчером окон. Наиболее часто используемый протокол называется WM_DELETE_WINDOW и используется для определения того, что происходит, когда пользователь явно закрывает окно с помощью диспетчера окон.

Вы можете использовать метод protocol для установки обработчика для этого протокола (виджет должен быть виджем Tk или Toplevel ):

Здесь у вас есть конкретный пример:

Ответ 2

Мэтт показал одну классическую модификацию кнопки закрытия.
Другой заключается в том, чтобы закрыть кнопку закрытия окна.
Вы можете воспроизвести это поведение, используя метод iconify protocol второй аргумент.

Вот рабочий пример, протестированный в Windows 7:

Ответ 3

В зависимости от активности Tkinter, и особенно при использовании Tkinter.after, остановка этой активности с помощью destroy() - даже с использованием protocol(), кнопки и т.д. - будет нарушать эту активность (ошибка "во время выполнения"), а не просто прекратить это. Лучшее решение почти в каждом случае - использовать флаг. Вот простой, глупый пример того, как его использовать (хотя я уверен, что большинству из вас это не нужно! :)

Это хорошо завершает графическую активность. Вам нужно только проверить running в нужном месте (ах).

Ответ 4

Попробуйте простую версию:

Или, если вы хотите добавить больше команд:

Ответ 5

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

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

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

Лучшее решение для этого - использовать флаг. Поэтому, когда пользователь запрашивает закрытие окна, вы отмечаете это как флаг, а затем реагируете на него.

(Примечание: я обычно проектирую GUI как хорошо инкапсулированные классы и отдельные рабочие потоки, и я определенно не использую "глобальный" (вместо этого я использую переменные экземпляра класса), но это должен быть простой, урезанный пример для демонстрации как Tk внезапно убивает ваши периодические обратные вызовы, когда пользователь закрывает окно. )

Этот код покажет вам, что обработчик WM_DELETE_WINDOW работает, даже когда наш пользовательский periodic_call() занят посреди работы/циклов!

Мы используем довольно преувеличенные значения .after() : 500 миллисекунд. Это просто для того, чтобы вам было очень легко увидеть разницу между закрытием, когда периодический вызов занят, или нет. Если вы закроете, когда номера обновляются, вы увидите, что WM_DELETE_WINDOW произошло, когда ваш периодический вызов "был занят обработкой: True". Если вы закроете, когда номера приостановлены (это означает, что периодический обратный вызов в этот момент не обрабатывается), вы увидите, что закрытие произошло, когда оно "не занято".

В реальных условиях ваш .after() будет использовать что-то вроде 30-100 миллисекунд, чтобы иметь отзывчивый графический интерфейс. Это просто демонстрация, чтобы помочь вам понять, как защитить себя от Tk по умолчанию, "мгновенно прерывать всю работу при закрытии".

В итоге: сделайте так, чтобы обработчик WM_DELETE_WINDOW установил флаг, а затем периодически проверяйте этот флаг и вручную .destroy() окно, когда оно безопасно (когда ваше приложение выполнено со всей работой).

Как заблокировать изменение окна в eel?

Bad-Coder

Помоему нельзя никак, если не JS функции. Тем более, если вы правильно работаете в html и css, то изменение окна, вашу программу не испортит. Чтобы установить минимальную длину и высоту Вашей программы можете использовать:

Если высота и ширина не удовлетворяются, то скрипт просто раскрывает его в исх. мин. размер. положение.

Не закрываемое окно с использованием tkinter

Эй, я делаю программу, которая делает снимок с помощью моей веб-камеры, когда я набираю неправильный пароль. Программа будет открыта, и я хочу, чтобы она не закрывалась. Мне нужно знать, как сделать окно не закрываемым с помощью tkinter.

Adailton Júnior 11 Май 2015 в 02:02

2 ответа

Вы можете попробовать все то, что предложил @abarnert, но я думаю, что самый простой способ - просто игнорировать событие close.

(отредактированный код для Windows)

Поэтому измените on_closing() на
def on_closing (): передать
и это делает его не подлежащим закрытию. Я пробовал Alt + F4 , кнопку закрытия, закрывая ее с панели задач Windows, но все безрезультатно. Единственный способ убить его - использовать диспетчер задач.

IronManMark20 11 Май 2015 в 01:58

У Tkinter нет никакого способа сделать это напрямую. Но у него есть кое-что, что может быть достаточно хорошим, или это может быть слишком излишним: overrideredirect :

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

Это не совсем актуально; на некоторых платформах он может иметь заголовок или границу . но он не будет закрываемым.

Это легко использовать: просто сделайте root.overrideredirect(True) (или, если вы хотите сделать это в другом окне Toplevel вместо своего корня, window.overrideredirect(True) ).

Но обратите внимание, что его нельзя переместить или закрыть , а не только то, что его нельзя закрыть. (Его также нельзя изменить, если вы этого хотите.)

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

Как мне оставить окно консоли открытым после завершения моей программы python, чтобы увидеть возникшие ошибки?

Я использую Python 3 на Win10 и запускаю свой код, открыв окно командной строки и введя местоположение файла. Тем не менее, окно закрывается, как только программа завершается, и, прежде чем я могу прочитать какие-либо ошибки. Редактировать: это происходит независимо от того, есть ли в программе ошибки. Спасибо.

The Samstro 17 Июл 2018 в 17:47

2 ответа

Я только что увидел ваш комментарий:

Похоже, вы не указали путь к исполняемому файлу python: вам нужно добавить путь к исполняемому файлу python в переменную PATH вашего окна. Вы можете увидеть, как это сделать, здесь: Добавить Python в переменную среды PATH ('python' не распознается как внутренняя или внешняя команда)

Вы можете использовать input("enter to exit") в конце вашего кода Python, чтобы программа оставалась активной. Он выйдет, как только вы нажмете Enter.

Вы также можете заключить свой код в оператор try except и поместить th input() в except , чтобы предотвратить выход из программы при возникновении ошибок, но как упоминал @Kevin в комментариях это отловит ошибки времени выполнения, но не синтаксические ошибки.

Вы можете записывать ошибки или любую другую информацию в файл, например log.txt , а затем читать этот файл журнала после завершения выполнения кода, например. как писать в файл в Python

Adam Jaamour 17 Июл 2018 в 15:07

FWIW, у меня есть несколько версий Python в моей системе Windows, поэтому я не хочу постоянно добавлять какие-либо каталоги Python в мой путь.

В проводнике Windows я перехожу в папку проекта, в которой я хочу работать, нажимаю в адресной строке и набираю ..\pyEnv . Это запускает DOS-окно, в котором я теперь могу сделать python myproject.py . Вы можете увидеть print() вывод, ошибки и так далее.

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

Незакрываемое окно с использованием tkinter

Эй, я делаю программу, которая делает снимок, используя мою веб-камеру, когда я набираю неправильный пароль. Программа будет открыта, и я хочу, чтобы она была закрыта. Мне нужно знать, как сделать окно незамкнутым с помощью tkinter.

спросил(а) 2015-05-11T02:02:00+03:00 6 лет, 4 месяца назад добавить комментарий пожаловаться

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

Здесь у вас есть конкретный пример:

(отредактированный код для Windows)

Поэтому измените on_closing() на
def on_closing(): pass
и это делает его незамкнутым. Я попробовал Alt + F4 , кнопку закрытия, закрыв ее с панели задач Windows, но безрезультатно. Единственный способ, которым я смог его убить, - использовать диспетчер задач.

ответил(а) 2015-05-11T04:58:00+03:00 6 лет, 4 месяца назад добавить комментарий пожаловаться

У Tkinter нет никакого способа сделать это напрямую. Но у него есть что-то, что может быть достаточно хорошим, или это может быть слишком много излишним: флаг overrideredirect :

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

Это не совсем современно; на некоторых платформах он может иметь название или границу. но он не будет закрыт.

Это прост в использовании: просто выполните root.overrideredirect(True) (или, если вы хотите сделать это с другим окном Toplevel а не с вашим корнем, window.overrideredirect(True) ).

Но заметьте, что он не может быть перемещен или закрыт, а не только, что он не может быть закрыт. (Он также не может быть изменен, если вы этого хотите.)

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

Очевидно, что если вы хотите, чтобы какие-либо виджеты в окне принимали клики, вы, вероятно, не хотите, чтобы все окно области перетаскивания. Фактически, вы можете не захотеть сделать все окно областью перетаскивания, даже если ему нечего что-то щелкнуть, потому что это не соответствует рекомендациям по интерфейсу для Mac или Windows. Вы можете подделать область захвата - полосу заголовка, границу вокруг окна и т.д. - например, добавив Label прикрепленный к стороне (сторонам), которую вы хотите захватить, и только bind туда, или создав "дочерняя" вставка окна из главного окна, которое крадет bind . Но это никогда не будет выглядеть как "родное" окно.

Если вам действительно нужно собственное окно, но с закрывающей рамкой ( X в верхнем правом углу Windows, красная точка в верхнем левом углу на Mac и т.д.) Отключена или отсутствует (и в Windows с помощью "закрыть" пункт в меню окна отключен, а также Alt + F4 и т.д., а также для X11. ). Насколько я знаю, в Tkinter нет кросс-платформенного способа сделать это. Вам нужно будет написать код для каждой платформы, которая попадает в основные исходные объекты окна и делает для них родные окна. В этот момент вы, вероятно, захотите использовать более мощную библиотеку окон, чем Tkinter-eg, я полагаю, что Qt, Gtk+ и wx имеют гораздо более простые способы создания обычного окна, но при отключенном флажке закрытия.

Как скрыть окно консоли в python?

Я хочу создать автономные двоичные файлы для Linux и Windows. И в основном я хочу, чтобы при запуске бота окно консоли должно скрываться, и пользователь не должен был видеть это окно.

Что я могу сделать для этого?

спросил(а) 2009-04-19T04:35:00+04:00 12 лет, 5 месяцев назад добавить комментарий пожаловаться

Просто сохраните его с расширением .pyw . Это предотвратит открытие окна консоли.

В системах Windows нет понятия "исполняемый режим". Установщик Python автоматически связывает файлы.py с файлом python.exe, чтобы двойной щелчок на файле Python запускал его как скрипт. Расширение также может быть.pyw, в этом случае окно консоли, которое обычно появляется, подавляется.

В linux просто запустите его, без проблем. В Windows вы хотите использовать исполняемый файл pythonw.

Update

Хорошо, если я понимаю вопрос в комментариях, вы спрашиваете, как сделать окно команд, в котором вы запустили бот из командной строки?

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

ответил(а) 2009-04-19T04:44:00+04:00 12 лет, 5 месяцев назад добавить комментарий пожаловаться

В Unix-системах (включая Linux, macOS и BSD)

Используйте nohup mypythonprog & , и вы можете закрыть окно терминала, не нарушая процесс. Вы также можете запустить exit , если вы работаете в облаке, и не хотите оставлять зависающий процесс оболочки.

В системах Windows

Сохраните программу с расширением .pyw , и теперь она будет открыта с помощью pythonw.exe . Нет окна оболочки.

Например, если у вас есть foo.py , вам нужно переименовать его в foo.pyw .

ответил(а) 2013-03-01T03:30:00+04:00 8 лет, 6 месяцев назад добавить комментарий пожаловаться

Если все, что вы хотите сделать, это запустить Python Script на компьютере с Windows, на котором установлен Python Interpreter, преобразование расширения вашего сохраненного Script из '.py' в '.pyw' должно сделать трюк,

Но если вы используете py2exe для преобразования вашего Script в автономное приложение, которое будет запускаться на любой машине Windows, вам нужно внести следующие изменения в ваш файл setup.py.

Следующий пример представляет собой простой python-GUI, созданный с использованием Tkinter:

Измените "консоль" в приведенном выше коде на "windows"..

Это откроет только созданный графический интерфейс Tkinter и отсутствие окна консоли.

Как закрыть окно Tkinterа с помощью кнопки

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

root.destroy() Метод класса для закрытия окна индикатора

destroy() разрушает или закрывает окно.

destroy() Неклассический метод закрытия окна индикатора

Ассоциированная функция root.destroy к атрибуту command кнопки непосредственно

Мы могли бы напрямую привязать функцию root.destroy к атрибуту кнопки command без определения дополнительной функции close_window .

root.quit для закрытия окна Tkinter

root.quit выходит не только из окна Tkinter Window, а точнее из всего интерпретатора Tcl.

Он может быть использован, если ваше Tkinter-приложение не запущено с Python бездействующим. Не рекомендуется использовать root.quit , если ваше Tkinter-приложение вызвано из idle, потому что quit убьет не только ваше Tkinter-приложение, но и из idle, потому что idle также является Tkinter-приложением.

Сопутствующая статья - Tkinter Button



Как скрыть окно консоли в python?

Я хочу создать автономные двоичные файлы для Linux и Windows. И в основном я хочу, чтобы при запуске бота окно консоли должно скрываться, и пользователь не должен был видеть это окно.

Что я могу сделать для этого?

ОТВЕТЫ

Ответ 1

Просто сохраните его с расширением .pyw . Это предотвратит открытие окна консоли.

В системах Windows нет понятия "исполняемый режим". Установщик Python автоматически связывает файлы.py с файлом python.exe, чтобы двойной щелчок на файле Python запускал его как скрипт. Расширение также может быть.pyw, в этом случае окно консоли, которое обычно появляется, подавляется.

Ответ 2

В linux просто запустите его, без проблем. В Windows вы хотите использовать исполняемый файл pythonw.

Update

Хорошо, если я понимаю вопрос в комментариях, вы спрашиваете, как сделать окно команд, в котором вы запустили бот из командной строки?

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

Ответ 3

В Unix-системах (включая Linux, macOS и BSD)

Используйте nohup mypythonprog & , и вы можете закрыть окно терминала, не нарушая процесс. Вы также можете запустить exit , если вы работаете в облаке, и не хотите оставлять зависающий процесс оболочки.

В системах Windows

Сохраните программу с расширением .pyw , и теперь она будет открыта с помощью pythonw.exe . Нет окна оболочки.

Например, если у вас есть foo.py , вам нужно переименовать его в foo.pyw .

Ответ 4

Если все, что вы хотите сделать, это запустить Python Script на компьютере с Windows, на котором установлен Python Interpreter, преобразование расширения вашего сохраненного Script из '.py' в '.pyw' должно сделать трюк,

Но если вы используете py2exe для преобразования вашего Script в автономное приложение, которое будет запускаться на любой машине Windows, вам нужно внести следующие изменения в ваш файл setup.py.

Следующий пример представляет собой простой python-GUI, созданный с использованием Tkinter:

Измените "консоль" в приведенном выше коде на "windows"..

Это откроет только созданный графический интерфейс Tkinter и отсутствие окна консоли.

Ответ 5

Это скроет вашу консоль. Сначала выполните эти строки в коде, чтобы сначала скрыть консоль.

Ответ 6

Дополнительная информация. для ситуаций, в которых потребуется решение win32gui, опубликованное Мохсеном Хаддади ранее в этой теме:

Дополнительная информация о пакете pywin32 находится на: Как использовать модуль win32gui с Python? ,

Кроме того, чтобы применить дискрецию при закрытии окна, чтобы случайно не закрыть какое-либо окно на переднем плане, разрешение можно расширить по следующим строкам:

Как создать новое окно, нажав кнопку в Tkinter

В этом уроке мы покажем, как создать и открыть новое окно Tkinter, нажав на кнопку в Tkinter.

Создать новое окно Tkinter

Обычно мы используем tk.Tk() для создания нового окна Tkinter, но это недействительно, если мы уже создали корневое окно, как показано в вышеприведенных кодах.

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

Он привязывает функцию createNewWindow к кнопке.

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

Как вы могли видеть, labelExample и buttonExample имеют свой родительский виджет как newWindow , но не app .

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

root.destroy() Метод класса для закрытия окна индикатора

destroy() разрушает или закрывает окно.

destroy() Неклассический метод закрытия окна индикатора

Ассоциированная функция root.destroy к атрибуту command кнопки непосредственно

Мы могли бы напрямую привязать функцию root.destroy к атрибуту кнопки command без определения дополнительной функции close_window .

root.quit для закрытия окна Tkinter

root.quit выходит не только из окна Tkinter Window, а точнее из всего интерпретатора Tcl.

Он может быть использован, если ваше Tkinter-приложение не запущено с Python бездействующим. Не рекомендуется использовать root.quit , если ваше Tkinter-приложение вызвано из idle, потому что quit убьет не только ваше Tkinter-приложение, но и из idle, потому что idle также является Tkinter-приложением.

Сопутствующая статья - Tkinter Button


report this ad

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

Окна предупреждений

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

Окна предупреждений

Эти диалоговые окна открываются с помощью функций showinfo , showwarning и showerror из модуля tkinter.messagebox :

Как работают окна с уведомлениями

В первую очередь нужно импортировать модуль tkinter.messagebox , задав для него алиас mb . В Python2 этот модуль назывался tkMessageBox , поэтому такой синтаксис позволит изолировать проблемы совместимости.

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

  • showinfo — операция была завершена успешно,
  • showwarning — операция была завершена, но что-то пошло не так, как планировалось,
  • showerror — операция не была завершена из-за ошибки.

Окна выбора ответа

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

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

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

Окна выбора ответа

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

Как и в прошлом примере сначала нужно импортировать tkinter.messagebox с помощью синтаксиса import … as и вызывать каждую из функций вместе с title и message :

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

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

Выбор файлов и папок

Диалоговые окна для выбора файлов позволяют выбирать один или несколько файлов из файловой системы. В Tkinter эти функции объявлены в модуле tkinter.filedialog , который также включает окна для выбора папок. Он также позволяет настраивать поведение нового окна: например, фильтрация по расширению или выбор папки по умолчанию.

Выбор файлов и папок

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

Первая кнопка будет вызывать функцию askopenfilename , а вторая — askdirectory :

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

Как работают окна выбора файлов и папок

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

  • title — название для диалогового окна.
  • initialdir — начальная папка.
  • filetypes — последовательность из двух строк. Первая — метка с типом файла в читаемом формате, а вторая — шаблон для поиска совпадения с названием файла.
  • multiple — булево значение для определения того, может ли пользователь выбирать несколько файлов.
  • defaultextension — расширение, добавляемое к файлу, если оно не было указано явно.

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

Читайте также: