Skip to main content

使用鼠标工具、模块的工具来拖动tkinter 提供控件。一个模块提供了用鼠标拖动和调整kinter 窗口大小的工具。

项目描述

姓名

tk_dragtool

描述

使用鼠标工具、工具的模块和控件提供控件。一个模块提供了使用鼠标拖动和调整 tkinter 窗口小部件的工具。

功能函数
bind_drag(tkwidget,拖动器)

拖曳拖拉机: 拖曳拖拉机被当事方的控件或窗口接收到, 拖曳拖拉机后, 拖曳拖拉机, 接受与会近距离接触, 但拖曳拖拉机作为事件的控制方, , 位置不会改变。 x 和 y: 作用同上。

bind_resize(tkwidget,拖动器,锚,min_w=0,min_h=0,move_dragger=True)

anchor:缩放的方位,取值为N,S,W,E,NW,SW,SE,分别表示东、西、南、北。 min_w,min_h:该方向tkwidget缩放的最小move_dragger: 缩放时是否移动拖动器。

可拖动(tkwidget)

调用draggwidget) 可以使用任何控件(可以使用):tkwidget 或一个控件(Wm)。 x 和只允许改变x 坐标。

获取位置()

获取鼠标当前位置。

移动(小部件,x=无,y=无,宽度=无,高度=无)

移动控件或窗口皆小部件,参数任选。

示例 示例

import tkinter as tk
from tk_dragtool import draggable

root=tk.Tk()
btn=tk.Button(root,text="Drag")
draggable(btn)
btn.place(x=0,y=0)
root.mainloop()
效果图

更复杂的例子,实现了 8 个例子:

btns=[] # 用btns列表存储创建的按钮
def add_button(func,anchor):
    # func的作用是计算按钮新坐标
    b=ttk.Button(root)
    b._func=func
    bind_resize(btn,b,anchor)
    x,y=func()
    b.place(x=x,y=y,width=size,height=size)
    b.bind('<B1-Motion>',adjust_button,add='+')
    btns.append(b)
def adjust_button(event=None):
    # 改变大小或拖动后,调整手柄位置
    for b in btns:
        x,y=b._func()
        b.place(x=x,y=y)
root=tk.Tk()
root.title("Test")
root.geometry('500x350')
btn=ttk.Button(root,text="Button")
draggable(btn)
btn.bind('<B1-Motion>',adjust_button,add='+')
x1=20;y1=20;x2=220;y2=170;size=10
btn.place(x=x1,y=y1,width=x2-x1,height=y2-y1)
root.update()
# 创建各个手柄, 这里是控件缩放的算法
add_button(lambda:(btn.winfo_x()-size, btn.winfo_y()-size),
           'nw')
add_button(lambda:(btn.winfo_x()+btn.winfo_width()//2,
                   btn.winfo_y()-size), 'n')
add_button(lambda:(btn.winfo_x()+btn.winfo_width(), btn.winfo_y()-size),
           'ne')
add_button(lambda:(btn.winfo_x()+btn.winfo_width(),
                   btn.winfo_y()+btn.winfo_height()//2),'e')
add_button(lambda:(btn.winfo_x()+btn.winfo_width(),
                   btn.winfo_y()+btn.winfo_height()), 'se')
add_button(lambda:(btn.winfo_x()+btn.winfo_width()//2,
                   btn.winfo_y()+btn.winfo_height()),'s')
add_button(lambda:(btn.winfo_x()-size, btn.winfo_y()+btn.winfo_height()),
           'sw')
add_button(lambda:(btn.winfo_x()-size,
                btn.winfo_y()+btn.winfo_height()//2), 'w')
root.mainloop()

效果图:

更复杂示例的效果图

作者:七分诚意 qq:307677200 百度贴吧账号:qfcy_ 作者CSDN主页:https ://blog.csdn.net/qfcy_/

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

tk-dragtool--1.1.2-.tar.gz (5.1 kB 查看哈希)

已上传 source