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

Python+PyQt5 манипуляции с линиями

20.10.2016, 21:31. Показов 1256. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Решил позаниматься с графикой и наткнулся на один вопрос. В приведенном ниже коде я создал paintEvent как по примеру, но я захотел при помощи slider'a менять значения которые рисуются в функции drawLine, 43 строчка кода, так вот не могу понять как вставить значения из slider'a. В других примерах видел что то на подобии такого slider.valueChanget.connect(и тут вставить что то что сможет принять значение int из valueChanget), но вот не могу понять как прикрутить так чтобы линия которая рисуется в коде изменялась в следствии изменения значения slider'a.
Код программы:
Кликните здесь для просмотра всего текста
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
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QSlider
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt, QRect
 
 
class Paint(QWidget):
    x = int(0)  # от безысходности создал поля класса
    y = int(0)  # и пытался через них передать значения в drawLine
 
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        self.setGeometry(300, 300, 280, 270)
 
        slider = QSlider(self)
        slider1 = QSlider(self)
        slider.setGeometry(QRect(50, 250, 160, 22))
        slider1.setGeometry(QRect(50, 230, 160, 22))
        slider.setOrientation(Qt.Horizontal)
        slider1.setOrientation(Qt.Horizontal)
        slider.setRange(0, 100)
        slider1.setRange(0, 100)
        slider.show()
        slider1.show()
        slider.valueChanged[int].connect(self.monipulationLine)
        slider1.valueChanged[int].connect(self.monipulationLine1)
        self.setWindowTitle('Paint line')
        self.show()
 
    def paintEvent(self, e):
        qp = QPainter()
        qp.begin(self)
        self.drawLines(qp)
        qp.end()
 
    def drawLines(self, qp):
        pen = QPen(Qt.black, 2, Qt.SolidLine)
        qp.setPen(pen)
        qp.drawLine(20, 20, self.x, self.y)  # x, y, x1, y1
 
    def monipulationLine(self, value):
        self.x = int(value)
 
    def monipulationLine1(self, value):
        self.y = int(value)
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    exemplare = Paint()
    sys.exit(app.exec_())
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2016, 21:31
Ответы с готовыми решениями:

Не могу установить библиотеку pyqt5-tools python не получается через терминал и настройки и python itnerpritathor
Прошу помочь

Порт pyqt5 (python 3.5) программы на android - Python
Подскажите пожалуйста возможно ли программу написанную на python методами pyqt5 переделать под...

PyQt5 python 3.4.1
Приветствую всех и прошу помощи! нужна программа в которой 4 строчки куда заносятся переменные,...

Python 3.6 не видит PyQt5
Здравствуйте! Никак не могу нормально подружить питона с PyQt5. Не проходит элементарный импорт:...

2
Эксперт Python
4632 / 2050 / 361
Регистрация: 17.03.2012
Сообщений: 10,134
Записей в блоге: 6
21.10.2016, 08:51 2
1. Скорее всего, у вас теряется ссылка на слайдеры. Держите ссылку. self.slider = ... вместо просто slider = ...
2. C линиями, и вообще графикой, лучше работать через связку QGraphicsScene + QGraphicsView + наследники QGraphicsItem, в т. ч. QGraphicsLineItem. Это вместо переопределения paintEvent.
0
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 40
22.10.2016, 13:28  [ТС] 3
self.slider не помгает. Видимо надо плотнее изучить события, слоты, сигналы, чтобы не задавать вопросов почему не работает
А по поводу QGraphicsScene + QGraphicsView+ QGraphicsItem спасибо. Буду изучать.
0
22.10.2016, 13:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2016, 13:28
Помогаю со студенческими работами здесь

Python и Pyqt5: потоки
Добрый день, программисты. Я начинающий программист. У меня есть такая задача: Есть окно...

PYQT5 designer Python 3.5
Доброго времени суток! Нуждаюсь в подсказке через PYQT5 designer создал окно с виджетами,...

Python -> PyQt5 background
Всем доброго времени суток! разработал проект и захотел его разукрасить. Добавил задний фон, иконку...

Paint в PYqt5 PYTHON
Помогите пожалуйста! Делаю рисовалку, уже сделал кисти, но не могу сделать инструмент фигуры,...

Python Pyside2 PyQt5 Qtdesigner
Помогите сделать так, чтобы сначала определялись центры кластеров, а затем рандомное создание точек...

Ищу наставника по pyQt5 - Python
Ищу наставника для систематических ПЛАТНЫХ занятий по скайпу по указанной теме. Размер оплаты 1000...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru