账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    pyqt5画线如何动态显示效果
    51
    0
    下面的代码可以工作-- coding: utf-8 --"""【简介】使用paintEvent在窗口实现划线例子"""import sysfrom PyQt5.QtWidgets import QApplication ,QWidget from PyQt5.QtGui import QPainter ,QPixmap,QPenfrom PyQt5.QtCore import Qt , QPointclass Winform(QWidget):def __init__(self,parent=None): super(Winform,self).__init__(parent) self.setWindowTitle("绘图例子") self.pix = QPixmap() # 实例化一个 QPixmap 对象 self.lastPoint = QPoint() # 起始点 self.endPoint = QPoint() #终点 self.initUi() self.bline=0 def initUi(self): #窗口大小设置为600*500 self.resize(600, 500) # 画布大小为400*400,背景为白色 self.pix = QPixmap(400, 400) self.pix.fill(Qt.white)# 重绘的复写函数 主要在这里绘制def paintEvent(self, event): pp = QPainter(self.pix) pen = QPen() # 定义笔格式对象 pen.setWidth(10) # 设置笔的宽度 pp.setPen(pen) #将笔格式赋值给 画笔 # 根据鼠标指针前后两个位置绘制直线 pp.drawLine(self.lastPoint, self.endPoint) # 让前一个坐标值等于后一个坐标值, # 这样就能实现画出连续的线 #self.lastPoint = self.endPoint painter = QPainter(self) painter.drawPixmap(0, 0, self.pix) # 在画布上画出'''#鼠标按压事件def mousePressEvent(self, event) : # 鼠标左键按下 if event.button() == Qt.LeftButton : self.lastPoint = event.pos() self.endPoint = self.lastPoint''''''# 鼠标移动事件def mouseMoveEvent(self, event): # 鼠标左键按下的同时移动鼠标 if event.buttons() and Qt.LeftButton : self.endPoint = event.pos() #进行重新绘制 self.update()'''# 鼠标释放事件def mouseReleaseEvent( self, event): # 鼠标左键释放 if event.button() == Qt.LeftButton : ''' self.endPoint = event.pos() #进行重新绘制 self.update() ''' if self.bline==0: self.lastPoint = event.pos() self.bline=1 else: self.endPoint = event.pos() self.bline=0 #进行重新绘制 self.update() if name == "__main__":app = QApplication(sys.argv) form = Winform()form.show()sys.exit(app.exec_()) 下面的代码没有达到我想要的效果,希望鼠标移动时临时显示画线-- coding: utf-8 --"""【简介】使用paintEvent在窗口实现划线例子"""import sysfrom PyQt5.QtWidgets import QApplication ,QWidget from PyQt5.QtGui import QPainter ,QPixmap,QPenfrom PyQt5.QtCore import Qt , QPointclass Winform(QWidget):def __init__(self,parent=None): super(Winform,self).__init__(parent) self.setWindowTitle("绘图例子") self.pix = QPixmap() # 实例化一个 QPixmap 对象 self.pix2 = QPixmap() # 实例化一个 QPixmap 对象 self.lastPoint = QPoint() # 起始点 self.endPoint = QPoint() #终点 self.endPoint2 = QPoint() #终点 self.initUi() self.bline=0 def initUi(self): #窗口大小设置为600*500 self.resize(600, 500) # 画布大小为400*400,背景为白色 self.pix = QPixmap(400, 400) self.pix.fill(Qt.white)# 重绘的复写函数 主要在这里绘制def paintEvent(self, event): if self.bline: pp = QPainter(self.pix2) pen = QPen() # 定义笔格式对象 pen.setWidth(3) # 设置笔的宽度 #pen.setColor(Red) # 设置笔 pp.setPen(pen) #将笔格式赋值给 画笔 # 根据鼠标指针前后两个位置绘制直线 pp.drawLine(self.lastPoint, self.endPoint2) # 让前一个坐标值等于后一个坐标值, # 这样就能实现画出连续的线 #self.lastPoint = self.endPoint painter = QPainter(self) painter.drawPixmap(0, 0, self.pix2) # 在画布上画出 else: pp = QPainter(self.pix) pen = QPen() # 定义笔格式对象 pen.setWidth(3) # 设置笔的宽度 pp.setPen(pen) #将笔格式赋值给 画笔 # 根据鼠标指针前后两个位置绘制直线 pp.drawLine(self.lastPoint, self.endPoint) # 让前一个坐标值等于后一个坐标值, # 这样就能实现画出连续的线 #self.lastPoint = self.endPoint painter = QPainter(self) painter.drawPixmap(0, 0, self.pix) # 在画布上画出'''#鼠标按压事件def mousePressEvent(self, event) : # 鼠标左键按下 if event.button() == Qt.LeftButton : self.lastPoint = event.pos() self.endPoint = self.lastPoint'''# 鼠标移动事件def mouseMoveEvent(self, event): if self.bline : self.endPoint2 = event.pos() #进行重新绘制 self.update() ''' # 鼠标左键按下的同时移动鼠标 if event.buttons() and Qt.LeftButton : self.endPoint = event.pos() #进行重新绘制 self.update()'''# 鼠标释放事件def mouseReleaseEvent( self, event): # 鼠标左键释放 if event.button() == Qt.LeftButton : ''' self.endPoint = event.pos() #进行重新绘制 self.update() ''' if self.bline==0: self.lastPoint = event.pos() self.bline=1 else: self.endPoint = event.pos() self.bline=0 #进行重新绘制 self.update() if name == "__main__":app = QApplication(sys.argv) form = Winform()form.show()sys.exit(app.exec_())
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 随风飘远 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部