当前位置:首页 » tkinter » 正文

tkinter 无标题栏窗体,鼠标可移动,还可调节大小

把一个窗体变成没有标题栏的窗体比较简单,只要一行代码:

root.overrideredirect(True)  # 无标题栏窗体

移动窗体需要绑定事件,绑定2个事件:鼠标点击MouseDown事件,按住拖动MouseMove事件,分别得到相应的坐标位置,把根据计算出的坐标位置,把窗体移动相应的新位置。

调节窗体大小,由于边框也没有了,不可能通过边框来调节窗体尺寸,只要新建一个组件,比如标签来根据绑定的鼠标拖动size事件来得到相应坐标,再根据计算出来的坐标,把窗体的尺寸调节到相应的大小。


以下是全部代码。          冫亓垚

from tkinter import *
 
def MouseDown(event): # 不要忘记写参数event
    global mousX  # 全局变量,鼠标在窗体内的x坐标
    global mousY  # 全局变量,鼠标在窗体内的y坐标
 
    mousX=event.x  # 获取鼠标相对于窗体左上角的X坐标
    mousY=event.y  # 获取鼠标相对于窗左上角体的Y坐标
    
def MouseMove(event):
    w1=la1.winfo_x() # w1为标签1的左边距
    h1=la1.winfo_y() # h1为标签1的上边距
    root.geometry(f'+{event.x_root - mousX-w1}+{event.y_root - mousY-h1}') # 窗体移动代码

def exit(event):
    root.destroy() # 退出程序
 
root=Tk() # 源码来自aying7.com
root.geometry('280x140+780+400')
root.overrideredirect(True)  # 无标题栏窗体

la1=Label(root,text='按着拖动,移动窗体\n鼠标双击退出程序',height=3,bg='lightgreen',cursor='fleur')
la1.pack(padx=15,pady=30)
 
la1.bind("<Button-1>",MouseDown)  # 按下鼠标左键绑定MouseDown函数
la1.bind("<B1-Motion>",MouseMove)  # 鼠标左键按住拖曳事件
la1.bind("<Double-Button-1>",exit)  # 双击鼠标左键,退出程序

def size(event):
    x1 = root.winfo_pointerx()
    y1 = root.winfo_pointery()
    x0 = root.winfo_rootx()
    y0 = root.winfo_rooty()
    root.geometry("%sx%s" % ((x1-x0),(y1-y0)))
    return

la2=Label(root,text='按住拖动调节窗体大小',bg='lightblue') # 标签2用来调节窗体尺寸
la2.pack(side=BOTTOM,anchor=E)
la2.bind("<B1-Motion>", size)

root.mainloop()

运行图

1.PNG

以上代码由 aying7.com 测试成功

来源:阿英工作室

本文链接:http://aying7.com/post/4.html

tkinter  
    << 上一篇 下一篇 >>

    赞助商链接

    湘公网安备 43011102000200号 - 湘ICP备08100508号