【PyQt4实例8】SVG格式图片的显示【转】

来源:互联网 发布:比美图秀秀好的软件 编辑:程序博客网 时间:2024/06/06 00:31

 转载上一实例相同的地址,但是发现有些BUG,修改了,代码如下:

#-*- coding:utf-8 -*-from PyQt4.QtCore import *from PyQt4.QtGui import *from PyQt4 import QtSvgfrom PyQt4 import QtXmlQTextCodec.setCodecForTr(QTextCodec.codecForName("utf-8"))class SvgWidget(QtSvg.QSvgWidget):    def __init__(self):        super(SvgWidget,self).__init__()        self.render = self.renderer()        self.mousePresPos = QPoint(0,0)        self.newPos = QPoint(20,20)    def wheelEvent(self, e):        self.diff = 0.1        self.size = QSize()        self.size = self.render.defaultSize()        self.mywidth = self.size.width()        self.myheight = self.size.height()        if e.delta() > 0:            self.mywidth = self.width() + self.width()*self.diff            self.myheight = self.height() + self.height()*self.diff        else:            self.mywidth = self.width() - self.width()*self.diff            self.myheight = self.height() - self.height()*self.diff        self.resize(self.mywidth,self.myheight)class SvgWindonw(QScrollArea):    def __init__(self):        super(SvgWindonw,self).__init__()        self.svgwidget = SvgWidget()        self.setWidget(self.svgwidget)        self.OK = False    def setFile(self,filename):        self.svgwidget.load(filename)        myrender = self.svgwidget.renderer()        self.svgwidget.resize(myrender.defaultSize())        self.OK = True        return myrender.defaultSize()    def mousePressEvent(self, e):        if self.OK:            self.mousePresPos = e.pos()            self.svgwidget.newPos.setX(self.horizontalScrollBar().value())            self.svgwidget.newPos.setY(self.verticalScrollBar().value())            e.accept()        else:            return    def mouseMoveEvent(self, e):        if self.OK:            self.horizontalScrollBar().setValue(self.svgwidget.newPos.x()-(self.mousePresPos.x() - e.pos().x()))            self.verticalScrollBar().setValue(self.svgwidget.newPos.y() - (self.mousePresPos.y() - e.pos().y()))            self.horizontalScrollBar().update()            self.verticalScrollBar().update()            e.accept()        else:            returnclass MainWindow(QMainWindow):    def __init__(self):        super(MainWindow,self).__init__()        self.setWindowTitle(self.tr("图片浏览器"))        self.svgwindow = SvgWindonw()        self.createbutton()        self.setCentralWidget(self.svgwindow)    def slotopenfile(self):        filename = QFileDialog.getOpenFileName(self,"打开文件","/","svg files(*.svg)")        if filename :            size = self.svgwindow.setFile(filename)            self.resize(size)        else:            return    def createbutton(self):        mainmenu = self.menuBar().addMenu(self.tr("文件"))        myaction = QAction(self.tr("打开"),self)        self.connect(myaction,SIGNAL("triggered()"),self.slotopenfile)        mainmenu.addAction(myaction)  if __name__ == '__main__':    import sys    app = QApplication(sys.argv)    mainwindow = MainWindow()    mainwindow.show()    sys.exit(app.exec_())



0 0