ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 如何使用pygtk拖动图像

2019-06-21 01:42:53  阅读:184  来源: 互联网

标签:python user-interface gtk pygtk


如何使用pygtk拖动/移动图像?

Here是有人这样做的视频,但该人没有提供源代码.

解决方法:

这里有一个小小的演示(我不好意思,它来自对不起),这与这里发现的很相似:http://www.pygtk.org/pygtk2tutorial/examples/dragndrop.py

import gtk

class DragImage(gtk.Image):
    def __init__(self,image,layout):
        gtk.Image.__init__(self)
        self.drag = False
        self.drag_x = 0
        self.drag_y = 0
        self.layout = layout
        self.x = 0
        self.y = 0
        self.set_from_file(image)
        self.event_box = gtk.EventBox()
        self.event_box.set_visible_window(False)
        self.event_box.add(self)
        self.event_box.add_events(gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK)
        self.event_box.connect("button-press-event", self.click)
        self.event_box.connect("button-release-event", self.release)
        self.event_box.connect("motion-notify-event", self.mousemove)
        self.layout.put( self.event_box, 0, 0 )

    def click(self, widget, event):
        self.drag =  True
        self.drag_x =  event.x
        self.drag_y =  event.y
        print(self.drag_x, self.drag_y)

    def release(self, widget, event):
        self.drag =  False

    def mousemove(self,widget,event):
        if self.drag:
            self.layout.move(self.event_box,self.x+int(event.x-self.drag_x),self.y+int(event.y-self.drag_y))
            self.x, self.y = self.layout.child_get(self.event_box,'x','y')

class move_test(object):
    def __init__(self):
        window =  gtk.Window()
        layout =  gtk.Layout()
        img1 = DragImage('image1.jpg',layout)
        img2 = DragImage('image2.jpg',layout)
        window.add(layout)
        window.show_all()

move_test()
gtk.main()

标签:python,user-interface,gtk,pygtk
来源: https://codeday.me/bug/20190621/1250530.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有