Найти - Пользователи
Полная версия: PyQT + paintEvent + frame
Начало » GUI » PyQT + paintEvent + frame
1
gevg
Здравствуйте.
Пытаюсь рисовать внутри фрейма, и ничего не получается к сожалению. Уже вроде бы всё попробовал и не работает, в чем ошибка?
def paintEvent(self, event):
        paint = QtGui.QPainter()
        paint.begin(self.ui.frame_graphic) #Если просто self, то рисуется за фреймом. а если оставить так то получаю QPainter::drawPoints: Painter not active
        paint.setPen(QtCore.Qt.red)
        size = self.size()
        for i in range(1000):
            x = random.randint(1, size.width()-1)
            y = random.randint(1, size.height()-1)
            paint.drawPoint(x, y)
        paint.end()
alexey-grom
Показали бы весь код, а то у меня все прекрасно работает.
Посмотрите чем мой отличается от вашего http://dumpz.org/192835/
gevg
Собственно код, Существует frame_graphic в файле полученном с помощью pyuic
import sys, random, math
from PyQt4 import QtGui, QtCore
from graph import *
class GraphWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
    
    def paintEvent(self, paint):
        paint = QtGui.QPainter(self)
        paint.begin(self)
        paint.setPen(QtCore.Qt.red)
        size = self.size()
        for i in range(1000):
            x = random.randint(1, size.width()-1)
            y = random.randint(1, size.height()-1)
            paint.drawPoint(x, y)
        paint.end()
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    main = GraphWindow()
    main.show()
    sys.exit(app.exec_())
alexey-grom
Смысл в том чтобы рисовать именно на фрейме? Тогда можно обрабатывать paintEvent самого фрейма http://dumpz.org/193029/ Нужно учитывать что self в framePaintEvent будет указывать на фрейм, и, например, self.size() получит размеры именно фрейма, а не всего окна. Здесь форма загружается сразу, а не компилируется предварительно.

Чтобы получить ссылку на фрейм frame_graphic, можно писать self.frame_graphic, а не self.ui.frame_graphic
gevg
alexey-grom, нет, именно self.ui.frame_graphic.

Вопрос решил, создал создал класс наследующий QFrame, в нем создал def paintEvent
И в нужном мне месте создаю объект этого класса.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB