Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.01.2023
Сообщений: 4

Перетаскивание прямоугольников

29.01.2023, 18:14. Показов 470. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Столкнулась с такой проблемой, что не могу сообразить как мне перетащить прямоугольник мышью в любое другое место. В моём коде прямоугольники появляются после нажатия кнопок.
Задача состоит в том, чтобы после появления прямоугольников их можно было перетаскивать левой кнопкой мыши.
Сам код:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import pygame
import sys
import pygame.font
from random import random, randint
Clock = pygame.time.Clock()
from pygame.color import THECOLORS
 
pygame.init()
screen = pygame.display.set_mode((1300, 700))
screen.fill(THECOLORS['whitesmoke'])  # фон и экран
f1 = pygame.font.SysFont('couriernew', 24)
text1 = f1.render("Игрок 1", True, (180, 0, 0))
text2 = f1.render("Игрок 2", True, (0, 0, 180))
screen.blit(text1, (30, 600))
screen.blit(text2, (1180, 600))  # текст
 
pygame.display.set_caption("Мини Территории")
r = pygame.Rect(150, 50, 1000, 500)
pygame.draw.rect(screen, (153, 255, 153), r, 4)  # игровое поле
 
for x in range(175, 1147, 25):
    pygame.draw.line(screen, (0,0,0), [x, 54], [x, 546], 1)
for y in range(75, 550, 25):
    pygame.draw.line(screen, (0,0,0), [154, y], [1146, y], 1) # клетки
 
rand1 = randint(1, 6)
rand2 = randint(1, 6)
r2 = pygame.Rect(625, 600, 100, 50)
pygame.draw.rect(screen, (220, 70, 100), r2, 0)
msg1, msg2 = str(rand1), str(rand2)
text3 = f1.render(f"{msg1} * {msg2}", True, (0, 0, 0)) #рандомайзер
 
r3 = pygame.Rect(1050, 600, 100, 50)
pygame.draw.rect(screen, (73, 203, 173), r3, 0)
r4 = pygame.Rect(150, 600, 100, 50)
pygame.draw.rect(screen, (20, 65, 100), r4, 0)
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            if r3.collidepoint(event.pos):
                pygame.draw.rect(screen, (220, 70, 100), r2, 0)
                rand1 = randint(1, 6)
                rand2 = randint(1, 6)
                msg1, msg2 = str(rand1), str(rand2)
                text3 = f1.render(f"{msg1} * {msg2}", True, (0, 0, 0))
                screen.blit(text3, (640, 615))  # отрисовывание кнопки
                r5 = pygame.Rect(1200, 100, rand1 * 25, rand2 * 25)  # первый прямоугольник
                pygame.draw.rect(screen, (220, 70, 100), r5, 0)
                r6 = pygame.Rect(1200, 300, rand2 * 25, rand1 * 25)  # второй прямоугольник
                pygame.draw.rect(screen, (220, 70, 100), r6, 0)
            if r4.collidepoint(event.pos):
                pygame.draw.rect(screen, (220, 70, 100), r2, 0)
                rand1 = randint(1, 6)
                rand2 = randint(1, 6)
                msg1, msg2 = str(rand1), str(rand2)
                text3 = f1.render(f"{msg1} * {msg2}", True, (0, 0, 0))
                screen.blit(text3, (640, 615))  # отрисовывание кнопки2
                r5 = pygame.Rect(0, 100, rand1 * 25, rand2 * 25)  # первый прямоугольник2
                pygame.draw.rect(screen, (100, 47, 187), r5, 0)
                r6 = pygame.Rect(0, 300, rand2 * 25, rand1 * 25)  # второй прямоугольник2
                pygame.draw.rect(screen, (100, 47, 187), r6, 0)
 
    pygame.display.flip()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2023, 18:14
Ответы с готовыми решениями:

Пересечение двух прямоугольников, объединение двух прямоугольников
Создать класс прямоугольник со сторонами, параллельными осям координат. Реализовать метод вывода на экран информации о прямоугольнике....

Перетаскивание квадрата мышью
Напишите программу, которая которая средствами Pygame создает окно 300×300 пикселей, в левом верхнем углу которого при старте программы...

TextEdit и перетаскивание
Доброго времени суток. При изучение drag and drop появилась загвоздка. В этих строчках подключение перетаскивания, но такого метода нет у...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2023, 18:14
Помогаю со студенческими работами здесь

Перетаскивание изображения
Здравствуйте, как перетаскивать какую либо картинку в pyqt5 python?

Перетаскивание карт (Pygame)
Доброго дня! Подскажите пожалуйста, юзаю модуль pygame. Хочу сделать добавление рандомного числа квадратиков на свой экран (квадраты...

Перетаскивание строк в QTableWiget
Не могу сделать перетаскивание строк в QTableWiget. Дошел только до такого: # -*- coding: utf-8 -*- from PyQt4.QtGui import * import...

Перетаскивание (drag and drop) мешает всплывающему окну
У меня есть 2 поля QListWidget: с победителями конкурса и со всеми участниками. Мне нужно из участников выделить победителей. При...

Даны стороны трех прямоугольников Найти периметры и площади этих прямоугольников
1. S1=SSS(a1, b1); S2=SSS(a2, b2); S3=SSS(a3, b3); -------------------------------- int SSS(int a, int b) { return (a*b);...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
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. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru