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

Запись номеров закрашенных пикселей в массив

05.05.2022, 20:16. Показов 863. Ответов 8

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

Вывести на форму рисунок, состоящий из различных объектов, не закрашенных и закрашенных полностью
напишите пожалуйста код и результат Изучите справки MSDN1 методы и свойства классов Graphics, Color, Pen и SolidBrush. Создайте...

Запись в массив Б номеров положительных элементов массива А
Помогите составить программу записи в массив Б номеров положительных элементов массива А. Всем добра. ;)

Вывести массив номеров строк и массив номеров столбцов, все элементы которых равны только 1 или только 0
Задан размер квадратной матрицы и значения ее элементов (0 или 1). Сформировать и вывести массив номеров строк и массив номеров столбцов,...

8
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
06.05.2022, 16:27
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
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton, QVBoxLayout, QLabel
 
class Window(QWidget):
  def __init__(self):
    super().__init__(None)
    self.grid = QGridLayout()
    self.grid.setSpacing(0)
    value = 0
    for column in range(16):
      for row in range(9,-1,-1):
        button = QPushButton()
        button.setStyleSheet("background-color: white")
        button.value = value
        button.state = False
        value = value + 1
        button.setFixedHeight(50)
        button.setFixedWidth(50)
        button.clicked.connect(self.click)
        self.grid.addWidget(button, row, column)
    self.label = QLabel("нажимайте кнопки для создания рисунка")
    self.label.setWordWrap(True)
    l = QVBoxLayout()
    l.addLayout(self.grid)
    l.addWidget(self.label)
    self.setLayout(l)
  def click(self):
    button = self.sender()
    button.state = not button.state
    if button.state:
      button.setStyleSheet("background-color: blue")
    else:
      button.setStyleSheet("background-color: white")
    result = []
    for column in range(16):
      for row in range(9,-1,-1):
        button = self.grid.itemAtPosition(row, column).widget()
        if button.state:
          result.append(button.value)
    self.label.setText("массив закрашенных клеток: " + str(result))
 
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
1
0 / 0 / 0
Регистрация: 21.03.2019
Сообщений: 21
06.05.2022, 18:22  [ТС]
Спасибо большое! Это даже лучше, чем я мог себе представить. А могу ли я сохранить массив с номерами ячеек для дальнейшего использования в основной программе? То есть сделать возможность выхода из окна с рисунком, сохранения массива result и дальнейшего выполнения кода с использованием этого массива.
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
06.05.2022, 18:39
Цитата Сообщение от Alex131311 Посмотреть сообщение
А могу ли я сохранить массив с номерами ячеек для дальнейшего использования в основной программе? То есть сделать возможность выхода из окна с рисунком, сохранения массива result и дальнейшего выполнения кода с использованием этого массива.
Ну, а почему нет- в любой момент времени объект Window может сформировать массив наподобие, как формируется result в методе click (можно даже для этого отдельный метод дописать). Ну и если массив можно сформировать, значит его и передать можно куда угодно. А закрытие виджета можно осуществлять с помощью вызова Window.close.
0
0 / 0 / 0
Регистрация: 21.03.2019
Сообщений: 21
06.05.2022, 19:12  [ТС]
То есть нужно обязательно создавать новый массив, аналогичный result? Или всё таки сам result можно использовать дальше в программе? В данный момент у меня не получается это сделать. Как только я заканчиваю отмечать нужные ячейки и закрываю окно, программа выполняется дальше, но массив result не определен.
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
07.05.2022, 13:19
Цитата Сообщение от Alex131311 Посмотреть сообщение
Как только я заканчиваю отмечать нужные ячейки и закрываю окно, программа выполняется дальше, но массив result не определен.
Мы же не знаем как вы его передаёте
Пример:
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 sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton, QVBoxLayout, QLabel, QDialog
 
class Editor(QDialog):
  def __init__(self, parent):
    super().__init__(parent)
    self.grid = QGridLayout()
    self.grid.setSpacing(0)
    value = 0
    for column in range(16):
      for row in range(9,-1,-1):
        button = QPushButton()
        button.setStyleSheet("background-color: white")
        button.value = value
        button.state = False
        value = value + 1
        button.setFixedHeight(50)
        button.setFixedWidth(50)
        button.clicked.connect(self.click)
        self.grid.addWidget(button, row, column)
    self.label = QLabel("нажимайте кнопки для создания рисунка")
    self.label.setWordWrap(True)
    closeButton = QPushButton("закрыть редактор и передать массив")
    closeButton.clicked.connect(self.accept)
    l = QVBoxLayout()
    l.addLayout(self.grid)
    l.addWidget(self.label)
    l.addWidget(closeButton)
    self.setLayout(l)
  def getResult(self):
    result = []
    for column in range(16):
      for row in range(9,-1,-1):
        button = self.grid.itemAtPosition(row, column).widget()
        if button.state:
          result.append(button.value)
    return result
  def click(self):
    button = self.sender()
    button.state = not button.state
    if button.state:
      button.setStyleSheet("background-color: blue")
    else:
      button.setStyleSheet("background-color: white")
    self.label.setText("массив закрашенных клеток: " + str(self.getResult()))
 
class MainWindow(QWidget):
  def __init__(self):
    super().__init__()
    self.label = QLabel("нажмите на кнопку, чтобы получить массив")
    button = QPushButton("получить массив")
    button.clicked.connect(self.getArray)
    l = QVBoxLayout()
    l.addWidget(self.label)
    l.addWidget(button)
    self.setLayout(l)
  def getArray(self):
    editor = Editor(self)
    if QDialog.Accepted == editor.exec_():
      result = editor.getResult()
      self.label.setText("получен такой массив: " + str(result))
 
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
0
0 / 0 / 0
Регистрация: 21.03.2019
Сообщений: 21
07.05.2022, 14:09  [ТС]
А можно ли этот массив как-нибудь вывести в консоль, либо же сохранить в отдельном файле? Чтобы была возможность его скопировать и использовать уже в другой программе.
Просто, опять же, я могу построить рисунок, и массив выводится в новом окне, но как инициализировать выполнение кода, который я хочу разместить после вашего скрипта, мне пока что непонятно... Если я пытаюсь что-то написать после вашей программы, то появляется такая ошибка:

P. S. Я понимаю, что скорее всего задаю глупые вопросы) Но в программировании я новичок, далеко не со всеми инструментами умею работать
Миниатюры
Запись номеров закрашенных пикселей в массив  
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
07.05.2022, 15:14
хмм... Так?
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
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton, QVBoxLayout, QLabel, QDialog
 
class Editor(QDialog):
  def __init__(self, parent):
    super().__init__(parent)
    self.grid = QGridLayout()
    self.grid.setSpacing(0)
    value = 0
    for column in range(16):
      for row in range(9,-1,-1):
        button = QPushButton()
        button.setStyleSheet("background-color: white")
        button.value = value
        button.state = False
        value = value + 1
        button.setFixedHeight(50)
        button.setFixedWidth(50)
        button.clicked.connect(self.click)
        self.grid.addWidget(button, row, column)
    self.label = QLabel("нажимайте кнопки для создания рисунка")
    self.label.setWordWrap(True)
    closeButton = QPushButton("закрыть редактор и передать массив")
    closeButton.clicked.connect(self.accept)
    l = QVBoxLayout()
    l.addLayout(self.grid)
    l.addWidget(self.label)
    l.addWidget(closeButton)
    self.setLayout(l)
  def getResult(self):
    result = []
    for column in range(16):
      for row in range(9,-1,-1):
        button = self.grid.itemAtPosition(row, column).widget()
        if button.state:
          result.append(button.value)
    return result
  def click(self):
    button = self.sender()
    button.state = not button.state
    if button.state:
      button.setStyleSheet("background-color: blue")
    else:
      button.setStyleSheet("background-color: white")
    self.label.setText("массив закрашенных клеток: " + str(self.getResult()))
 
app = QApplication(sys.argv)
editor = Editor(None)
while QDialog.Accepted != editor.exec_():
  pass
result = editor.getResult()
 
#дальше работаем с result
print(str(result))
0
0 / 0 / 0
Регистрация: 21.03.2019
Сообщений: 21
07.05.2022, 15:17  [ТС]
Да! Спасибо большое! Вы мне очень помогли.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2022, 15:17
Помогаю со студенческими работами здесь

Дан массив A размера N. Вывести его элементы с удвоением их номеров в порядке возрастания номеров: A1, A2, A4, A8,…Условный оператор не использовать.
помогите с задачей . буду очень благодарен ... • Дан массив A размера N. Вывести его элементы с удвоением их номеров в порядке...

Массив: Получите массив пикселей, где каждый пиксель определяется как среднее между четырьмя пикселями исходного массива
Прошу вашей помощи поскольку даже не знаю как начать, заранее спасиб. Изображение задано двумерным массивом (n×m) пикселей, где 0...

Массив пикселей
Здравствуйте. Подскажите пожалуйста, как из изображения получить массив пикселей?

Массив пикселей
Хочу работать с графикой, попробовал различные библиотеки, но сейчас хочу создать что-то свое. Поэтому вопрос: как создать массив пикселей?...

Быстрый перевод значений цветов пикселей изображения в двоичную систему счисления и запись их в строку
Здравствуйте. Имеется изображение формата bmp. Для получения цветов пикселей использую Scanline. Вопрос в следующем, можно ли и как...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru