Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 27, 2010 12:29:01

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

[PyQt4] QGraphicsScene

Начал переползать на PyQt. После tkinter все стало казаться более запутанным :(
Такая проблемка. Есть QGraphicsScene. Допустим, приложение открывается, распахивается на весь экран, все окно занимает сцена. На этой сцене нужно помещать картинки, размеры которых могут превышать размеры сцены. Как сделать так, чтоб размер сцены оставался фиксированным и был равным размеру QGraphicsView, не было полос прокрутки , а отчет координат шел всегда с верхнего левого угла?

#coding:utf-8
# сорри за стиль, не могу пока отвыкнуть от tkinter :)
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore

app = QtGui.QApplication(sys.argv)

root = QtGui.QMainWindow()
root.show()
root.showMaximized()

frame=QtGui.QFrame(root)
scene = QtGui.QGraphicsScene()
view = QtGui.QGraphicsView(scene)
root.setCentralWidget(view)
# здесь ставим фото, заведомо большее размера экрана
i=QtGui.QGraphicsPixmapItem(QtGui.QPixmap(u'2.jpg'))
i.setPos(500,500)
scene.addItem(i)

sys.exit(app.exec_())
можно конечно в лоб задать scene.setSceneRect, но как и где брать размеры, ума не приложу.



Отредактировано (Дек. 27, 2010 12:48:22)

Офлайн

#2 Дек. 28, 2010 06:12:49

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

[PyQt4] QGraphicsScene

Это можно сделать, переопределив несколько событий. Но возникает вопрос: а может, нужна совсем не сцена?



Офлайн

#3 Дек. 28, 2010 14:49:53

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

[PyQt4] QGraphicsScene

Андрей Светлов
Но возникает вопрос: а может, нужна совсем не сцена?
А что еще можно использовать? Требований совсем не много. Накидать пару картинок в нужных местах и полупрозрачность (картинки будут частично перекрываться).



Офлайн

#4 Дек. 29, 2010 07:55:58

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

[PyQt4] QGraphicsScene

Ну взять QWidget и переопределить рисовалку и/или resize.



Офлайн

#5 Янв. 2, 2011 12:35:53

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

[PyQt4] QGraphicsScene

Получилось проще… Лучшим учебником по PyQt для меня оказался Qt Designer :)

view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
view.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version