|
3 / 3 / 1
Регистрация: 22.10.2022
Сообщений: 7
|
||||||
Нарисовать домик22.10.2022, 12:50. Показов 15280. Ответов 20
Метки нет (Все метки)
Здравствуйте, я начал изучать Python по учебнику К.Ю.Полякова, и не могу понять что не так в коде. По идее программа должна запросить два числовых значения (координаты), и потом на их основе вывести картинку. Сам код картинки правильный, по учебнику, но непонятно куда вставлять верхнюю его часть. Помогите, подскажите
![]()
0
|
||||||
| 22.10.2022, 12:50 | |
|
Ответы с готовыми решениями:
20
Модуль Graph. Нарисовать домик. Нарисовать узор из окружностей Нарисовать домик Нарисовать домик |
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|||||||
| 22.10.2022, 12:57 | |||||||
![]() Добавлено через 35 секунд И home(x, y) снизу убрать Добавлено через 4 минуты Кликните здесь для просмотра всего текста
2
|
|||||||
|
3 / 3 / 1
Регистрация: 22.10.2022
Сообщений: 7
|
||
| 22.10.2022, 13:43 [ТС] | ||
|
Добавлено через 7 минут
0
|
||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 22.10.2022, 14:41 | |
|
1
|
|
|
3 / 3 / 1
Регистрация: 22.10.2022
Сообщений: 7
|
|||||||
| 22.10.2022, 15:14 [ТС] | |||||||
Сообщение было отмечено 8Observer8 как решение
Решение Спасибо что отозвались ![]()
1
|
|||||||
| 22.10.2022, 18:02 | |||||||
|
Переписал на PyQt6 по урокам:
Для запуска примера нужно установить PyQt6 командой:
small-house-qpainter-pyqt6/main.py
2
|
|||||||
| 22.10.2022, 23:20 | |||||||||||
|
Преимущество PyQt6 в том, код на нём легко переправить на Qt6 C++, чтобы собрать не такой большой EXE, как с помощью PyInstaller: small-house-qpainter-qt6-cpp-exe.zip (7.25 Мб) Qt6 C++ позволяет без больших трудозатрат собирать APK для Android. Введение в Qt6 C++: https://zetcode.com/gui/qt5/
main.cpp
3
|
|||||||||||
| 22.10.2022, 23:28 | |
|
Скриншот выше не обновил, где включил папку platforms с qwindows.dll
1
|
|
| 23.10.2022, 02:32 | ||||||
|
Ещё одно преимущество PyQt6 в том, что QPainter сильно похож Canvas API, поэтому несложно сделать веб-версию своего приложения, которая может быть развёрнута, например, на бесплатном хостинге GitHub Pages и будет запускаться в один клик на всех ОС, где есть браузер, в том числе на мобильных устройствах. Демка в песочнице: https://plnkr.co/edit/sLfUEO4fTHJQ2gSs
Итого, получается, что:
index.html
2
|
||||||
|
3 / 3 / 1
Регистрация: 22.10.2022
Сообщений: 7
|
||
| 01.11.2022, 16:09 [ТС] | ||
2
|
||
| 01.11.2022, 19:27 | ||
|
4
|
||
| 10.11.2022, 20:53 | |||||||
|
В PyQt есть обёртка над OpenGL. В перспективе можно рисовать не только в 2D, но и в 3D. На базовом уровне ничего сложного в OpenGL нет. Объекты рисуются треугольниками. Даже линию/отрезок нужно рисовать двумя треугольниками, которые образуют прямоугольник с малой высотой. Можно один раз задать прямоугольник, а потом трансформировать его с помощью использования класса QMatrix4x4. Координаты треугольников объекта задаются в массиве. Вершинный шейдер берёт последовательно координаты вершин из массива, а фрагментный шейдер пробегается по пикселям и задаёт цвет пикселя. Цвет можно передать через переменную в фрагментный шейдер.
Пример создания пустого окна с заданным цветом холста. Для запуска примера нужно поставить пакеты:
1
|
|||||||
| 10.11.2022, 20:59 | ||||||||||||||||
|
Можно избавиться от написания "gl.", если импортировать из PyOpenGL так:
1
|
||||||||||||||||
| 10.11.2022, 22:21 | ||||||||||||||||||
|
Пример рисования двух прямоугольников с заданными координатами, размерами, углом поворота и цветами на PyQt6 и OpenGL3
На OpenGL можно самому определить систему координат. Можно где угодно расположить начало системы координат - в любой точке холста и любое направление осей. В данном случае, я как и в примерах темы расположил начало системы координат в верхнем левом углу, а ось Y направил вниз:
2
|
||||||||||||||||||
| 07.12.2022, 14:54 | ||||||||||||||||
|
Немного поясню пример выше с шейдерным OpenGL. Конечно, наверное, лучше сначала было на нешейдерном нарисовать. В шейдерном определяют массив вершин треугольников, который сохраняют в оперативную память видеокарты. Шейдеры компилируются и отправляются тоже в оперативную память видеокарты. Далее, при вызове метода glDrawArrays графический процессор видеокарты (GPU) запускает вершинный шейдер для каждой вершины треугольника. Вершины по очереди попадают в переменную aPosition. Матрица Projection * View * Model умножается на каждую вершину. Фрагментный шейдер вызывается для каждого пикселя, устанавливая цвет пикселя.
В примере выше создан класс Widget, который унаследован от QOpenGLWidget. Это позволило переопределить два метода:
В методе initializeGL() один раз вершины двух прямоугольников копируются в память оперативной памяти видеокарты:
Чем отличаются несколько методов определения треугольников:
2
|
||||||||||||||||
| 07.12.2022, 15:32 | ||||||||||||||||||||||||||
|
Получение доступа к переменным шейдеров
Шейдеры, при каждом запуске программы, один раз компилируются и копируются в оперативную память видеокарты, потому что существуют разные производители видеокарта. В результате компиляции получается объект "program" класса QOpenGLShaderProgram, через который можно получать доступ к шейдерам. В шейдерах есть переменные, которые нужно задать извне: aPosition, uMvpMatrix и uColor. Для доступа к этим шейдерным переменным создаются идентификаторы:
Переменная "uniform" означает, что она общая для всех вершин данного вызова glDrawArrays(), ещё значение устанавливается до вызова glDrawArrays(), например для результирующей матрицы и цвета полигонов:
2
|
||||||||||||||||||||||||||
| 11.01.2023, 18:55 | |||||||
|
Как вариант, на Python можно создать окно на PySDL2, вывести GUI на ImGUI и нарисовать объекты с помощью нешейдерного OpenGL версии 1 со статическим конвейером. Правда, на ImGUI и Python не работает вывод на русском, хотя на C++ работает. Я создал issue по этому поводу: https://github.com/pyimgui/pyimgui/issues/316
main.py
2
|
|||||||
| 11.01.2023, 19:01 | ||
|
Ошибся в названии пакета. Надо было PySDL2 вместо PySDL:
0
|
||
|
1 / 1 / 0
Регистрация: 02.02.2023
Сообщений: 3
|
|
| 02.02.2023, 16:05 | |
|
Друг, спасибо что ты есть, так подробно разжевать вопрос это талант, сам изучаю Python последние 3 месяца и ты очень помог, спасибо!
1
|
|
| 05.02.2023, 16:15 | ||||||||||||||||||||||||||||||||||||
|
Текущий итог моих умозаключений по поводу инструментов для рисования графики. Библиотека PySDL2 хороша, но есть критичные для меня недостатки, об этом ниже. Её API похож на PyGame, так как PyGame использует SDL2. PySDL2 может быть использована как база (окно, клавиатура, мышь) для OpenGL графики для рисования не только в 2D, но и в 3D. Данный домик можно было бы нарисовать в 3D и это необходимо сделать на следующей итерации развития проекта. На этапе релиза проекта PySDL2 можно переписать на SDL С++ (из PyQt значительно проще переписать на Qt C++), чтобы собрать EXE, а также SDL2 позволяет собирать для Android, iOS и для Web в WASM (WebAssembly) с помощью Emscripten SDK. То есть можно иметь у себя на компьютере Python версии приложений, которые проще развивать, чем С++, они занимают мало места, а при необходимости переписывать на C++.
Но есть альтернативный вариант и это PyQt и Qt C++. Этот вариант имеет ряд преимуществ:
Для себя решил, что лучше всего брать OpenGL версии 2 вместо версии 1 и версии 3, потому что у меня почему-то приложения на версии 3 не запускаются на эмуляторе Android (и на железе тоже). OpenGL 2.1 - практически тоже самое, что и OpenGL ES 2.0. Версии 2.1 может быть более чем достаточно для всех задач. Данная задача с домиком очень показательна - надо обязательно как можно чаще делать задачи в сочетании графики с GUI, конечно, если интересна графика.
0
|
||||||||||||||||||||||||||||||||||||
| 05.02.2023, 16:15 | |
|
Помогаю со студенческими работами здесь
20
Нарисовать домик
Нарисовать домик Нарисовать домик нарисовать домик Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|