Найти (программное обеспечение)
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2021 г. ) |
Оригинальный автор(ы) | Эндрю Уильямс |
---|---|
Разработчик(и) | Эндрю Уильямс, Седрик Бэйл, Чангкун Оу, Чарльз Дэниелс, Дрю Уэймут, Джейкоб Алзен, Лука Корбо, Пабло Фуэнтес, Стив О’Коннор, Стивен Хьюстон, Стюарт Скотт, Тило Прютц |
Первоначальный выпуск | 5 февраля 2018 г |
Стабильная версия | 2.4.4 / 13 февраля 2024 г [1] |
Написано в | Идти |
Операционная система | Linux , Unix-подобная , macOS , Windows , IOS , Android (операционная система) |
Тип | Набор инструментов для виджетов |
Лицензия | Новая лицензия BSD |
Веб-сайт | отлично |
Fyne — это бесплатный кроссплатформенный набор виджетов с открытым исходным кодом для создания графических пользовательских интерфейсов (GUI) на настольных и мобильных платформах. Он предназначен для того, чтобы дать разработчикам возможность создавать приложения, работающие на нескольких настольных и мобильных платформах/версиях, из единой базы кода. [2] Файн использует OpenGL для обеспечения кроссплатформенной графики. Он основан на принципах Material Design и позволяет создавать приложения, которые выглядят и ведут себя одинаково на всех платформах. [3] Он лицензируется в соответствии с условиями лицензии BSD из 3 пунктов , поддерживающей создание бесплатных и проприетарных приложений. В декабре 2019 года Fyne стал самым популярным набором инструментов для графического интерфейса Go по версии GitHub. [4] а в начале февраля 2020 года он был проектом №1 в рейтинге трендов GitHub. [5]
Разработка
[ редактировать ]Fyne в настоящее время разрабатывается командой волонтеров и поддерживается около 40 участниками. [6] Члены этой группы также работают над проектом FyneDesk по созданию новой Linux среды рабочего стола . [7]
Инструментарий Fyne написан преимущественно на Go . [8] Команда фокусируется на чистых API и следует принципам чистого кода, чтобы обеспечить удобство сопровождения проекта. [9] Все проекты Fyne постоянно тестируются на предмет правильности, стабильности, а также форматирования и документации. [10] [11]
Пример
[ редактировать ]Код, необходимый для простого приложения «Hello World», минимален и выглядит следующим образом:
package mainimport ( "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget")func main() { a := app.New() w := a.NewWindow("Hello") hello := widget.NewLabel("Hello Fyne!") w.SetContent(container.NewVBox( hello, widget.NewButton("Hi!", func() { hello.SetText("Welcome :)") }), )) w.ShowAndRun()}
Для сборки этого приложения вам понадобится язык Go и установленный компилятор C , а также графический драйвер, поддерживающий OpenGL .Его можно собрать и запустить с помощью команды: $ go run main.go
Дизайн
[ редактировать ]Разработка API-интерфейса Fyne и компонентов пользовательского интерфейса тщательно продумана, чтобы обеспечить простоту. [12] Инструментарий Fyne состоит из нескольких уровней, каждый из которых находится в отдельных пакетах. Известные слои включают: [13]
API
[ редактировать ]API или интерфейс прикладного программирования — это интерфейс или протокол, который обеспечивает связь между различными частями программного обеспечения. Fyne имеет самодокументируемый API, который также является расширяемым, что дает каждому разработчику возможность создавать собственные инструменты, уникальные для своего проекта, которые будут взаимодействовать с самим Fyne.
Векторная графика
[ редактировать ]Использование векторной графики для рисования пользовательского интерфейса обеспечивает метод адаптации к различным устройствам и размерам дисплеев без потери точности изображения. Это позволяет программисту создать пользовательский интерфейс только один раз, и он будет выглядеть так, как ожидалось, на любом устройстве.
Иерархия
[ редактировать ]Холст
[ редактировать ]Canvas содержит все содержимое окна, от полноэкранного режима до группы CanvasObjects.
ХолстОбъект
[ редактировать ]CanvasObjects — это то, что на самом деле отображается на экране, например текст, прямоугольник, линия. Объекты хранят информацию о размере, положении и цвете для процесса рендеринга.
Контейнер
[ редактировать ]Контейнеры — это группы CanvasObjects, каждый контейнер может указать макет, который будет содержать размеры и положение его дочерних компонентов. Макеты помогают разработчику упорядочивать компоненты таким образом, чтобы они соответствовали размеру контейнера или окна, при этом предусмотрено несколько типов макетов, включая «Граница», «Центр» и «Сетка».
Виджет
[ редактировать ]Все компоненты окна в CanvasObject представляют собой виджеты, содержащие стандартные элементы пользовательского интерфейса. Виджеты Fyne включают, помимо прочего, основные элементы пользовательского интерфейса, такие как: кнопка, проверка, форма, гиперссылка, метка, Radio, Select и Toolbar, а также виджеты-контейнеры, такие как AppTabs и Split. Начиная с версии 1.4 появились дополнительные виджеты коллекций, которые обеспечивают высокопроизводительное представление больших данных в виде списка, таблицы или дерева. Все встроенные виджеты пользовательского интерфейса гарантируют, что стандартные аспекты интерактивности графического пользовательского интерфейса будут действовать предсказуемым и ожидаемым образом во всех приложениях. Это помогает улучшить качество программ, одновременно помогая программистам, устраняя необходимость самостоятельно создавать эти инструменты.
Пакеты
[ редактировать ]Все компоненты Fyne разбиваются на пакеты, а затем подключаются через API для создания окончательного приложения с графическим интерфейсом. Помимо пакетов холста, макета и виджетов, известные пакеты включают в себя:
- Пакет приложения, который является основной точкой входа для приложения, который управляет пониманием типа устройства, на котором работает приложение, и гарантирует, что код будет работать на этом устройстве должным образом.
- Тестовый пакет, позволяющий разрабатывать через тестирование для проверки функционирования самого графического интерфейса, как ожидалось.
Использовать
[ редактировать ]Крупнейшим проектом, в настоящее время использующим набор инструментов Fyne, является проект FyneDesk, полноценная среда рабочего стола для Linux. [14]
С помощью этого инструментария создается множество других приложений; те из них, которые имеют открытый исходный код, можно найти в списке приложений. [15] сайт, управляемый проектом.
Многие компании используют набор инструментов Fyne для быстрого добавления графического пользовательского интерфейса к инструментам командной строки, которые они уже создали с помощью Go. [ нужна ссылка ]
Ссылки
[ редактировать ]- ^ «Множество исправлений ошибок и улучшений скорости в версии 2.4» . github.com . 13 февраля 2023 г.
- ^ Орели, Ваш (25 августа 2021 г.). «Изучение Go на примерах: часть 7. Создание кроссплатформенного графического пользовательского интерфейса/приложения для настольных ПК на Go» .
- ^ «Масштабирование и геометрия» .
- ^ Файн [@Fyne_io] (19 декабря 2019 г.). «Мы очень рады сообщить, что Fyne теперь является самым популярным* набором инструментов GUI для Go! Отличные новости и огромная веха :). Теперь нам нужно придумать, как донести радость Fyne до более широкого сообщества программистов. [*] По данным звездочета GitHub, ⭐️ #golang #winning #future» ( твит ) . Проверено 7 января 2021 г. - через Twitter .
- ^ Файн [@Fyne_io] (11 февраля 2020 г.). «Ого, проект @Fyne_io в настоящее время занимает первое место в списке трендов GitHub!!! https://t.co/oeRtXklEK9 #congratulations #goland #gui #trending https://t.co/HMy1TpJ3u5 " ( Твиттер ) . Проверено 7 января 2021 г. - через Twitter .
- ^ «Соавторы fyne-io/fyne · GitHub» . Гитхаб . 25 февраля 2020 г.
- ^ Хьюстон, Стивен [@stephenmhouston] (31 декабря 2019 г.). «Я так горжусь тем, как далеко мы продвинулись с этим рабочим столом менее чем за год работы. Это действительно замечательный опыт и очень эстетичный опыт. Пожалуйста, рассмотрите возможность его использования, если вы являетесь пользователем #linux! #fyne #golang #go #linuxdesktop #desktop https://t.co/jKqWriYrIG» ( твит ) . Проверено 7 января 2021 г. - через Twitter .
- ^ «Необычное использование Go: графические интерфейсы (Go Time #116)» .
- ^ «fyne/CONTRIBUTING.md на master · fyne-io/fyne · GitHub» . Гитхаб . 25 февраля 2020 г.
- ^ «Fyne.io — Трэвис Си» .
- ^ «Coveralls.io — История и статистика прохождения тестов» .
- ^ «Тщательный процесс, лежащий в основе простоты Файна» .
- ^ Архивировано в Ghostarchive и Wayback Machine : «GoLab 2019 — Эндрю Уильямс — Легко создавайте кроссплатформенные графические приложения с помощью Fyne» . Ютуб .
- ^ «Полная среда рабочего стола для Linux/Unix с использованием Fyne: Fyne-io/Desktop» . Гитхаб . 24 февраля 2020 г.
- ^ «Список приложений Fyne» .
Библиография
[ редактировать ]- Уильямс, Эндрю (25 февраля 2019 г.), Практическая разработка приложений с графическим интерфейсом пользователя на Go (1-е изд.), Packt , ISBN 978-1-78913-841-2
- Шилли, Майк (1 ноября 2019 г.), Linux Magazine 229 - Сразу к делу , Linux New Media
- Уильямс, Эндрю (25 января 2021 г.), Создание кроссплатформенных приложений с графическим интерфейсом пользователя с помощью Fyne (1-е изд.), Packt , ISBN 978-1-80056-316-2
- Бейл, Седрик (март 2023 г.), GNU Linux Magazine / France 262 — Modern Native Application in Go , Les Éditions Diamond
- Бэйл, Седрик (май 2023 г.), GNU Linux Magazine / Франция 263 — Современные собственные приложения на Go: манипулирование данными, модульное тестирование, интеграция и GitHub , Les Éditions Diamond
- Уильямс, Эндрю (август 2023 г.), Linux Magazine 273 — Разработка кроссплатформенных приложений с графическим интерфейсом пользователя с помощью Fyne , Linux New Media