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

PyQt4. Отрисовка точек по координатам. Передача аргументов

03.03.2016, 16:05. Показов 3729. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть код, который отрисовывает рандомно точки, а мне нужно по определенным координатам. Координаты я получаю из файла в функции readFromFile. Вопрос заключается в том, как передать список mas1 в функцию paintEvent?
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
#!/usr/bin/python
 
# points.py
 
import sys, random
from PyQt4 import QtGui, QtCore
 
 
class Points(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
 
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Points')
 
    def readFromFile():
        f = open('D:\\field_1.txt', encoding="utf-8")
        fd = f.read()
        q = 0
        mas, mas1 = [], []
        temp = ''
        for i in fd:
            mas.append(i)
        for i in range(len(mas)):
            if(mas[i] == '\t'):
                q = q + 1
                mas1.append(temp)
                temp = ''
            elif(mas[i] in ['0','1','2','3','4','5','6','7','8','9']):
                temp += mas[i]
        return mas1
 
    def paintEvent(self, event):
        paint = QtGui.QPainter()
        paint.begin(self)
        color = QtGui.QColor(255, 0, 0)     #RGB
        #paint.setPen(QtCore.Qt.red)
        paint.setPen(color)
        size = self.size()
        for i in range(2000):
            x = random.randint(1, size.width()-1)
            y = random.randint(1, size.height()-1)
            paint.drawPoint(x, y)
        paint.end()
 
app = QtGui.QApplication(sys.argv)
dt = Points()
dt.show()
app.exec_()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2016, 16:05
Ответы с готовыми решениями:

Отрисовка 2D и 3D примитивов по координатам кликом мыши и по координатам в командной строки
Добрый день. ПОМОГИТЕ ПОЖАЛУЙСТА УМОЛЯЮ. Стоит задача: Отрисовка 2D и 3D примитивов. Организовать диалог с пользователем через...

Отрисовка многоугольника по координатам
Имеется массив координат точек многоугольника (маршрут на карте). В виде 1 49.132072 48.570231 2 49.104644 48.791567 3 49.151777...

Найти по заданным координатам 4-х точек расстояние между ними. координаты точек задаются из CSV файла
Доброго времени суток. Нужна ваша помощь по задаче на Python. Найти по заданным координатам 4-х точек расстояние между ними. координаты...

4
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
03.03.2016, 17:18
А вот банальный вызов одной функции из другой или сохранение данных в атрибуте класса и потом из нужной функции читать оттуда данные несудьба?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
04.03.2016, 08:49
Переопределять paintEvent не советую, это на крайний случай, когда требуется что-то действительно нестандартное.
Лучше воспользуйтесь QGraphicsView вместе со всем, что к нему прилагается.
0
0 / 0 / 1
Регистрация: 07.12.2014
Сообщений: 42
04.03.2016, 14:20  [ТС]
Если ты имеешь ввиду это:
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
def paintEvent(self, event):
        def readFromFile():
            f = open('D:\\field_1.txt', encoding="utf-8")
            fd = f.read()
            q = 0
            mas, mas1 = [], []
            temp = ''
            for i in fd:
                mas.append(i)
            for i in range(len(mas)):
                if(mas[i] == '\t'):
                    q = q + 1
                    mas1.append(temp)
                    temp = ''
                elif(mas[i] in ['0','1','2','3','4','5','6','7','8','9']):
                    temp += mas[i]
            return mas1
        paint = QtGui.QPainter()
        paint.begin(self)
        color = QtGui.QColor(255, 0, 0)     #RGB
        paint.setPen(color)
        size = self.size()
        for i in range(25):
            #x = random.randint(1, size.width()-1)
            x = int(mas1[i])
            y = random.randint(1, size.height()-1)
            paint.drawPoint(x, y)
        paint.end()
то все равно выдает ошибку NameError: name 'mas1' is not defined
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
04.03.2016, 14:42
yumek, ты определил одну функцию внутри другой, а я говорю о вызове функции.
Python
1
2
3
4
5
6
7
8
9
def read_data():
    result = [1, 2, 4, 3, 12]
    print('data processing')
    return result
 
 
def do_work():
    data = read_data()
    print(data)
Советую подучить мат часть, точнее начать учиться программированию, основам, а не лезть в дебри, тем более в построение GUI. GUI это не тема для новичков.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2016, 14:42
Помогаю со студенческими работами здесь

Постепенная отрисовка линии по координатам
Стоит задача при нажатии на иконку начать отрисовку пути на карте. Но путь начинает рисоваться одновременно и с начальной точки и где-то...

Отрисовка вертикальной линии по координатам
Добрый день. Мне нужна по мощь по зарисовки в с++ Builder. Проблема в том что получаю данные с анализатора они изображаются, хочу чтоб еще...

Массив: отрисовка массива линий по координатам
Создать программу выполняющую действия: 1)вводить и сохранять в массиве данных введенные пользователем координаты линий {знаю что у линий...

Отрисовка треугольника по введенным координатам вершин
Добрый день. Помогите с кодом для отрисовки треугольника по введенным координатам (х и у) его вершин. То есть при загрузке программы,...

Отрисовка кривой траектории по меняющимся координатам
Прошу помощи с проблемой в отрисовщике Paint Event . drawPolyline не работает (требуется отрисовка кривой траектории по меняющимся...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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