Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4: поворот и drag-and-drop картинок [RSS Feed]

#1 Ноя. 25, 2008 20:29:20

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

Подскажите пожалуйста классы PyQt4, которые надо смотреть, чтобы реализовать следующее:
1. Отображение в окне программы картинок jpg или png, drag-and-drop этих картинок в пределах окна программы.
2. Поворот картинок на плоскости окна программы на указанный угол (трёхмерности не нужно). Интерактивного поворота (имеется в виду плавный поворот мышью способом drag-and-drop) не нужно, достаточно программно прорисовать картинку в нужный момент под нужным углом.



Офлайн

#2 Ноя. 26, 2008 12:13:44

Cleric
От:
Зарегистрирован: 2007-06-26
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

я бы посоветовал посмотреть примеры идущие вместе с PyQt4

The gray Cardinal
1. Отображение в окне программы картинок jpg или png, drag-and-drop этих картинок в пределах окна программы.
examples\draganddrop\draggableicons\draggableicons.pyw
examples\draganddrop\puzzle\puzzle.pyw

The gray Cardinal
2. Поворот картинок на плоскости окна программы на указанный угол (трёхмерности не нужно). Интерактивного поворота (имеется в виду плавный поворот мышью способом drag-and-drop) не нужно, достаточно программно прорисовать картинку в нужный момент под нужным углом.
examples\painting\transformations.pyw



Офлайн

#3 Ноя. 26, 2008 13:49:58

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

Спасибо, но со вторым (examples\painting\transformations.pyw) не совсем понятно. Мне нужно загрузить картинки прямо из файлов jpg или png, и “крутить” уже их. Там вроде не совсем то?



Офлайн

#4 Ноя. 26, 2008 15:51:50

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

Привет.
Можно так сделать:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui,QtCore

class MyView(QtGui.QGraphicsView):
def __init__(self,*args):
QtGui.QGraphicsView.__init__(self,*args)
# поворот против часовой стрелки на 10 градусов
def slotRotateLeft (self):
self.rotate(-10)
# поворот по часовой стрелке на 10 градусов
def slotRotateRight(self):
self.rotate(10)


app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.resize(500,500)

scene = QtGui.QGraphicsScene()
scene.addPixmap(QtGui.QPixmap("/home/mike/Desktop/lena.jpg"))
view = MyView(scene)

buttonLeft = QtGui.QPushButton("Left")
buttonRight = QtGui.QPushButton("Right")

# связываем нажатие кнопки с поворотом против/по часовой стрелке
QtCore.QObject.connect(buttonLeft ,QtCore.SIGNAL("clicked()"),view.slotRotateLeft )
QtCore.QObject.connect(buttonRight,QtCore.SIGNAL("clicked()"),view.slotRotateRight)

# размещаем виджеты
layout=QtGui.QVBoxLayout()
layout.addWidget(view)
layout.addWidget(buttonLeft)
layout.addWidget(buttonRight)
widget.setLayout(layout)

widget.show()
sys.exit(app.exec_())
Drag_and_Drop не поддерживается, как и заказывали :)



Офлайн

#5 Ноя. 26, 2008 18:59:45

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

gmorgunov
Спасибо, отличный пример!



Офлайн

#6 Ноя. 26, 2008 20:09:54

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

Никак не соображу, как вот это в питон приспособить: :/

 QGraphicsPixmapItem* pPixmapItem = scene.addPixmap(QPixmap("/home/mike/Desktop/lena.jpg"));
pPixmapItem->setFlags(QGraphicsItem::ItemIsMovable);
Тогда в питоне будет drag_and_drop. В ++ он есть.



Офлайн

#7 Ноя. 26, 2008 21:21:31

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

pix = scene.addPixmap(QtGui.QPixmap("/home/mike/Desktop/lena.jpg"))
pix.setFlags(QtGui.QGraphicsItem.ItemIsMovable)



Офлайн

#8 Ноя. 27, 2008 05:46:37

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

poltergeist
pix = scene.addPixmap(QtGui.QPixmap("/home/mike/Desktop/lena.jpg"))
pix.setFlags(QtGui.QGraphicsItem.ItemIsMovable)
Спасибо.Все заработало. Я так и думал, что вы или ice ответите. :)



Офлайн

#9 Ноя. 30, 2008 17:01:54

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

По аналогии с предыдущим примером пишу:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui

class MainWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

pixmap = QtGui.QPixmap(u'boo.jpg')
scene = QtGui.QGraphicsScene()
scene.addPixmap(pixmap)
view = QtGui.QGraphicsView(scene)
boxlay = QtGui.QHBoxLayout(self)
boxlay.addWidget(view)

if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())
Однако, картинка не прорисовывается (пустое белое поле), ошибок никаких. Файл boo.jpg находится рядом со скриптом. Что не так?



Отредактировано (Ноя. 30, 2008 17:02:35)

Офлайн

#10 Ноя. 30, 2008 19:04:46

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4: поворот и drag-and-drop картинок

Начинает работать, если строки

scene = QtGui.QGraphicsScene()
scene.addPixmap(pixmap)
view = QtGui.QGraphicsView(scene)
заменить на строки
self.scene = QtGui.QGraphicsScene()
self.scene.addPixmap(pixmap)
view = QtGui.QGraphicsView(self.scene)
Может кто объяснить, почему?



Офлайн

  • Начало
  • » GUI
  • » PyQt4: поворот и drag-and-drop картинок[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version