python tkinker界面

文章详细介绍了如何使用Python的Tkinter库创建一个可以移动的窗口,包含图片显示、鼠标事件(左键移动、左键释放和右键关闭)的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import tkinter
from PIL import Image, ImageTk

dog = tkinter.Tk()
# 设置图片描绘的坐标,注意乘号是字母x
dog.geometry('500x500+200+100')
# 不允许修改大小
dog.resizable(False, False)
# 不显示标题栏
dog.overrideredirect(True)
# 设置白色透明色,这样图片中所有白色区域都被认为是透明的了
dog.wm_attributes('-transparentcolor', 'white')

# 打开图片并设置尺寸
image = Image.open(r'D:\bbgg.png').resize((500, 500))
image = ImageTk.PhotoImage(image)
lbImage = tkinter.Label(dog, image=image)

lbImage.pack(fill=tkinter.BOTH, expand=tkinter.YES)

tkinter.Label(lbImage, text='Hello tkinter',
              fg='green', bg='white',
              height=1, width=15, anchor='nw').pack(padx=90,pady=120)
# tkinter.Label(lbImage, text='Hello tkinter2222222',
#               fg='green', bg='white',
#               height=1, width=15, anchor='nw').pack(padx=120,pady=89)

# 鼠标左键按下时设置为1表示可移动窗口,抬起后不可移动
canMove = tkinter.IntVar(dog, value=0)
# 记录鼠标左键按下的位置
X = tkinter.IntVar(dog, value=0)
Y = tkinter.IntVar(dog, value=0)


# 鼠标左键按下时的事件处理函数
def onLeftButtonDown(event):
    X.set(event.x)
    Y.set(event.y)
    canMove.set(1)


lbImage.bind('<Button-1>', onLeftButtonDown)


# 鼠标移动时的事件处理函数
def onLeftButtonMove(event):
    if canMove.get() == 0:
        return
    newX = dog.winfo_x() + (event.x - X.get())
    newY = dog.winfo_y() + (event.y - Y.get())
    g = f'500x500+{newX}+{newY}'
    dog.geometry(g)


lbImage.bind('<B1-Motion>', onLeftButtonMove)


# 鼠标左键抬起时的事件处理函数
def onLeftButtonUp(event):
    canMove.set(0)


lbImage.bind('<ButtonRelease-1>', onLeftButtonUp)


# 鼠标右键抬起时的事件处理函数(关闭事件)
def onRightButtonUp(event):
    dog.destroy()


lbImage.bind('<ButtonRelease-3>', onRightButtonUp)

dog.mainloop()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值