PyQt4 实现图片移动,缩放加载网络图片,并实现拖动

37 篇文章 1 订阅
#-*- coding:utf-8 -*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import  *
import requests            
import os,sys





PIC=[".jpg",".JPG",".PNG",".png",".JPEG",".jpeg",".bmp",".BMP",".gif",".GIF"]

#*******************************************************************
#*******************************************************************
#***************************布局类**********************************
#*******************************************************************
#*******************************************************************
class graphicsView(QLabel):
    def __init__(self,parent=None):
        super(graphicsView,self).__init__(parent)
        self._parent=parent
        
    def mousePressEvent(self,event):
            if event.button()==Qt.LeftButton:
                self.dragPosition=event.globalPos()-self._parent._tree.frameGeometry().topLeft()
                #print self.dragPosition
                event.accept()
            if event.button()==Qt.RightButton:
                #pass
                self.close()
            
            
    def mouseMoveEvent(self,event):
            if event.buttons()& Qt.LeftButton:
                self._parent._tree.move(event.globalPos()-self.dragPosition)
                event.accept()


    


   
#*******************************************************************
#*******************************************************************
#***************************拖拽类**********************************
#*******************************************************************
#*******************************************************************

class MyLineEdit(QLineEdit):
        def __init__( self, parent=None ):
            super(MyLineEdit, self).__init__(parent)
            self.setDragEnabled(True)

        def dragEnterEvent( self, event ):
            
            data = event.mimeData()
            urls = data.urls()
            if ( urls and urls[0].scheme() == 'file' ):
                event.acceptProposedAction()
        def dragMoveEvent( self, event ):
            data = event.mimeData()
            urls = data.urls()
            if ( urls and urls[0].scheme() == 'file' ):
                event.acceptProposedAction()

        def dropEvent( self, event ):
            data = event.mimeData()
            urls = data.urls()
            if ( urls and urls[0].scheme() == 'file' ):
                filepath = str(urls[0].path())[1:]
                self.setText(filepath)

#*******************************************************************
#*******************************************************************
#***************************功能类**********************************
#*******************************************************************
#*******************************************************************
class Nude_transform_gui(QWidget):
    
    def __init__(self):
        super(Nude_transform_gui,self).__init__()
        #self.setWindowFlags(Qt.Window)
        self.setWindowTitle("Ai_Nude_Tool_a")
        
        self.initUI()
    
    def initUI(self):


        pic_address=QLabel(u'图片地址:')
        self.pic_address=MyLineEdit(r'http://www.laotuzi.com/d/file/meizitu/9351fa8c196482040f2d46811a2585eb.jpg')
        pic_button=QPushButton(u"加载")

        save_address=QLabel(u'图片地址:')
        self.save_address=MyLineEdit()
        save_button=QPushButton(u"浏览")

        
        self._tree=graphicsView(self)
 
        
        start_work=QPushButton(u"转换图片")
 


        pbar=QLabel(u"进度")
        self.time_pos=QLineEdit()
        
        self.pbar = QProgressBar()

        #print dir(self.pbar)

        
        #groupNameData.setFrameStyle(QFrame.Panel|QFrame.Sunken)
        

        
        laty_1=QHBoxLayout()
        laty_1.addWidget(pic_address)
        laty_1.addWidget(self.pic_address)
        laty_1.addWidget(pic_button)
     

        laty_2=QHBoxLayout()
        laty_2.addWidget(self._tree)
        
        
      

        laty_3=QHBoxLayout()
        laty_3.addWidget(save_address)
        laty_3.addWidget(self.save_address)
        laty_3.addWidget(save_button)


        laty_4=QHBoxLayout()
        #print(dir(laty_4))
        laty_4.addStretch(10)
        laty_4.addSpacing(10)
        laty_4.addWidget(self.time_pos,1)
        laty_4.addWidget(pbar,1)
        laty_4.addWidget(self.pbar ,3)
        laty_4.addWidget(start_work,2)




        all_lay=QVBoxLayout()
        all_lay.addLayout(laty_1)
        all_lay.addLayout(laty_2)
        all_lay.addLayout(laty_3)
        all_lay.addLayout(laty_4)


      
        self.setLayout(all_lay)
        
        self.resize(600,600)


        pic_button.clicked.connect(self.get_pic_address)
        save_button.clicked.connect(self.get_save_address)
        start_work.clicked.connect(self.transform_nude)
   
   





    def get_pic_address(self):
            pic_address=self.pic_address.text()
            if(pic_address==""):
                QMessageBox.information(self,u"提示", u"请输入图片地址")
                return
            name=pic_address
            if not os.path.exists(name):  

                url=r'http://img0.pclady.com.cn/pclady/1512/11/1408247_2.jpg'
                req = requests.get(url)
                self._tree.image=QPixmap()
                self._tree.image.loadFromData(req.content)

                self._tree.setPixmap (self._tree.image)
               
  
             
                
    def get_save_address(self):
        filename = QFileDialog.getExistingDirectory()
        if filename:
            filename=filename.replace("\\",'/')

    def createRandomString(self,len):
        pass
    def _process(self,i_image, o_image, use_gpu):
        pass
	
            

    def transform_nude(self):
        pass
#*******************************************************************
#*******************************************************************
#***************************主函数***********************************
#*******************************************************************
#******************************************************************* 

if __name__ == '__main__': 
    app = QApplication(sys.argv)
    bili = Nude_transform_gui()
    bili.show()
    sys.exit(app.exec_())

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值