Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 15.07.2021
Сообщений: 2

Создание многоугольников и отдельное их передвижение мышкой

15.07.2021, 16:55. Показов 2552. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите, как можно нарисовать правой кнопкой мыши многоугольник, а левой кнопкой мыши этот многоугольник двигать. Допустим этих многоугольников будет много. Ну и допустим при закрытии окна (или по кнопке) сохранять конфигурацию многоугольника в файл. Возможно ли такое? Просто уже много всего перерыл и так и не смог ничего подобного найти. Буду весьма благодарен за пример кода.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2021, 16:55
Ответы с готовыми решениями:

Окружности - создание и передвижение их мышкой
Вообщем у меня задаются параметры r1 r2 и r3 - это так называемые три различных радиуса, мне необходимо создать в scrollbox - 3 круга...

Перемещение многоугольников мышкой
Написать программу, в которой многоугольники(правильные) рисуются из массива, фигура выделяется мышкой и перемещается удержанием. Можно...

Передвижение блока мышкой
Хочу сделать перемещение блока мышью. Узнавать координаты мыши научился, но в JS коде выскакивает ошибочка. function MoveWindow(id) ...

4
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
15.07.2021, 17:06
Цитата Сообщение от Eversory Посмотреть сообщение
Возможно ли такое?
Да. Посмотрите листинги к книге Н. Прохоренок, В. Дронов
"Python 3 и PyQt 5. Разработка приложений". Там есть готовые примеры из которых это можно собрать.
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
15.07.2021, 18:01
Рисоваание
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from tkinter import*
 
root = Tk()
 
class GUI(Canvas):
    '''inherits Canvas class (all Canvas methodes, attributes will be accessible)
       You can add your customized methods here.
    '''
    def __init__(self,master,*args,**kwargs):
        Canvas.__init__(self, master=master, *args, **kwargs)
    
 
polygon = GUI(root)
polygon.create_polygon([150,75,225,0,300,75,225,150],     outline='gray', 
            fill='gray', width=2)
 
polygon.pack()
root.mainloop()
Добавлено через 7 минут
Движение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import tkinter as tk
 
root = tk.Tk()
 
canvas = tk.Canvas(root)
canvas.pack()
 
shape_id = canvas.create_oval(0, 0, 100, 100)
 
 
def move_oval(event):
    canvas.coords(shape_id, event.x - 50, event.y -
                  50, event.x + 50, event.y + 50)
 
 
canvas.bind('<1>', move_oval)
 
root.mainloop()
1
0 / 0 / 0
Регистрация: 15.07.2021
Сообщений: 2
16.07.2021, 08:22  [ТС]
А на tkinter это никак не реализовать? Просто на нем уже больше половины программы написано. А вот реализовать редактирование уже существующих объектов я не могу сделать. Если это все проще на Pyqt5 сделать, то наверное придется переходить на него. Подскажите пожалуйста....
0
 Аватар для Михалыч
1011 / 355 / 59
Регистрация: 28.02.2013
Сообщений: 939
16.07.2021, 14:25
Цитата Сообщение от Eversory Посмотреть сообщение
А на tkinter это никак не реализовать?
не знаю) вот под то вы описываете, я не встречал. только как показал Dax. А в pyqt хотите рисуйте, группируйте, таскайте)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtWidgets, QtGui
import sys
 
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("Класс QGraphicsItemGroup")
window.resize(600, 400)
 
scene = QtWidgets.QGraphicsScene(0.0, 0.0, 500.0, 335.0)
scene.setBackgroundBrush(QtCore.Qt.white)
 
line1 = scene.addLine(50.0, 50.0, 450.0, 50.0, 
                     pen=QtGui.QPen(QtCore.Qt.red, 3))
line1.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
line1.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
line1.setFlag(QtWidgets.QGraphicsItem.ItemIsFocusable)
 
line2 = scene.addLine(QtCore.QLineF(50.0, 100.0, 450.0, 100.0), 
                      pen=QtGui.QPen(QtCore.Qt.blue, 3))
line2.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
line2.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
line2.setFlag(QtWidgets.QGraphicsItem.ItemIsFocusable)
 
group = QtWidgets.QGraphicsItemGroup()
group.addToGroup(line1)
group.addToGroup(line2)
group.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
group.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
scene.addItem(group)
 
rect = scene.addRect(QtCore.QRectF(0.0, 0.0, 400.0, 100.0), 
                     pen=QtGui.QPen(QtCore.Qt.blue, 3),
                     brush=QtGui.QBrush(QtCore.Qt.green))
rect.setPos(QtCore.QPointF(50.0, 150.0))
rect.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable)
rect.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
rect.setFlag(QtWidgets.QGraphicsItem.ItemIsFocusable)
 
view = QtWidgets.QGraphicsView(scene)
 
box = QtWidgets.QVBoxLayout()
box.addWidget(view)
window.setLayout(box)
 
window.show()
sys.exit(app.exec_())
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.07.2021, 14:25
Помогаю со студенческими работами здесь

Передвижение объекта за мышкой
Короче дамы и господа помогите пожалуйста.Как сделать чтобы рисунок передвигался за мышью.Видел похожую тему,но особо не понял.Объясните...

Передвижение объекта мышкой
Всем привет! Возникла некая необходимость таскать некий объект по форме. Как это сделать? Пытался через mouseMoveEvent. Перемещение...

Передвижение мышкой обьектов
Графика GDI+ Передвижение мышкой обьектов Например есть графический обьект слова, нужна мышкой перемещать этот обьект?

Передвижение мышкой фигуры
Господа, здравствуйте. Есть форма и класс, в классе описана фигура, как сделать так, чтобы можно было передвигать фигуру в PictureBox с...

Передвижение объектов по форме мышкой
Хочу написать в Windows Forms игру Unblock King. На данном этапе реализовал реализовал перемещение PictureBox по форме, и их столкновение....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru