改写linux窗口程序设计的Qt例子(5)

来源:互联网 发布:淘宝上卖铁观音 编辑:程序博客网 时间:2024/05/22 15:51

首先声明,如果转载请声明作者以及来源

第三十六例子 一个简单的绘图工具

首先,先说明下,不知道为什么,反正各种线段的类型,感觉不明显,不知道是程序不对还是怎么了
求大神指点。。。

__author__ = '375159507@qq.com'try:    from PySide import  QtGui    from PySide import  QtCoreexcept ImportError:    from PyQt4 import  QtGui    from PyQt4 import  QtCoreclass PianArea(QtGui.QWidget):    def __init__(self):        super(PianArea,self).__init__()        self.setPalette(QtGui.QPalette(QtCore.Qt.white))        self.setAutoFillBackground(True)        self.setMinimumSize(400,400)        self.pix = QtGui.QPixmap(self.size())        self.pix.fill(QtCore.Qt.white)        self.mypen = QtGui.QPen()        self.mypen.setStyle(QtCore.Qt.SolidLine)        self.mypen.setColor( QtCore.Qt.red)        self.mypen.setWidth(5)        self.startPos = QtCore.QPoint(0,0)    def setPenStyle(self,newStyle):        self.mypen.setStyle(QtCore.Qt.DashDotDotLine)        self.update()    def setColor(self,newColor):        self.mypen.setColor(newColor)    def setWidth(self,newWidth):        self.mypen.setWidth(newWidth)    def clear(self):        self.pix = QtGui.QPixmap(self.size())        self.pix.fill(QtCore.Qt.white)        self.update()    def resizeEvent(self, e):        if self.height() > self.pix.height() or self.width() > self.pix.width():            newpaint = QtGui.QPixmap(self.size())            newpaint.fill(QtCore.Qt.white)            p = QtGui.QPainter(newpaint)            p.setPen(self.mypen)            p.drawPixmap(QtCore.QPoint(0,0),self.pix)            self.pix = newpaint        super().resizeEvent(e)    def mousePressEvent(self, e):        self.startPos = e.pos()    def mouseMoveEvent(self, e):        temppainter = QtGui.QPainter(self.pix)        temppainter.setPen(self.mypen)        temppainter.drawLine(self.startPos,e.pos())        self.startPos = e.pos()        self.update()    def paintEvent(self, e):        newpaint = QtGui.QPainter(self)        newpaint.setPen(self.mypen)        newpaint.drawPixmap(QtCore.QPoint(0,0),self.pix)class MainWindow(QtGui.QMainWindow):    def __init__(self):        super(MainWindow,self).__init__()        self.area = PianArea()        self.setCentralWidget(self.area)        self.createCrt()    def slotWidth(self,newwidth):        self.area.setWidth(newwidth)    def slotColor(self):        newcolor = QtGui.QColorDialog.getColor()        if newcolor:            self.pencolorshow.setPalette(newcolor)            self.area.setColor(newcolor)    def slotStyle(self,index):        if index == -1:            return        newstyle = self.penstyle.itemData(index)        self.area.setPenStyle(newstyle)    def createCrt(self):        self.penwidth = QtGui.QSpinBox()        self.penwidth.setRange(1,15)        self.penwidth.valueChanged.connect(self.slotWidth)        self.pencolorshow = QtGui.QFrame(self)        self.pencolorshow.setAutoFillBackground(True)        self.pencolorshow.setPalette(QtGui.QPalette(QtCore.Qt.red))        self.pencolorshow.setMinimumSize(20,25)        self.pencolor = QtGui.QPushButton("画笔颜色")        self.pencolor.clicked.connect(self.slotColor)        self.penstyle = QtGui.QComboBox(self)        self.penstyle.addItem("SolidLine",QtCore.Qt.SolidLine)        self.penstyle.addItem("DashDotDotLine",QtCore.Qt.DashDotDotLine)        self.penstyle.addItem("DashDotLine",QtCore.Qt.DashDotLine)        self.penstyle.addItem("DotLine",QtCore.Qt.DotLine)        self.penstyle.addItem("DashLine",QtCore.Qt.DashLine)        self.penstyle.currentIndexChanged.connect(self.slotStyle)        self.newtoolbar = QtGui.QToolBar("Tool")        self.newtoolbar.addWidget(self.penwidth)        self.newtoolbar.addWidget(self.pencolorshow)        self.newtoolbar.addSeparator()        self.newtoolbar.addWidget(self.pencolor)        self.newtoolbar.addWidget(self.penstyle)        self.addToolBar(self.newtoolbar)if __name__ == '__main__':    import sys    app = QtGui.QApplication(sys.argv)    mainwindow = MainWindow()    mainwindow.show()    sys.exit(app.exec_())





原创粉丝点击