python tkinter库画布鼠标拖动监听_python – Tkinter: 使用鼠标绘制矩形

不显示滚动条,因为您将它们网格化到一个框架中(self.sbarv = Scrollbar(self,...)),没有将其放入父窗口中. 您可以直接将Canvas网格化到父窗口(self.canvas = Canvas(master,...)).

您应该做的是将画布放入自己的手中,然后使用框架将框架包装到主窗口中

app = ExampleApp(root)

app.pack()

但是,滚动时,event.x和event.y不再代表画布上的正确位置,因此您应该使用

self.start_x = self.canvas.canvasx(event.x)

self.start_y = self.canvas.canvasy(event.y)

curX = self.canvas.canvasx(event.x)

curY = self.canvas.canvasy(event.y)

所以,我知道您想在将鼠标拖动到画布的边框时自动滚布吗?为此,您需要检查鼠标是否在画布的边缘,如果是,请向该方向滚动. 您可以使用以下内容:

w, h = self.canvas.winfo_width(), self.canvas.winfo_height()

if event.x > 0.9*w:

self.canvas.xview_scroll(1, 'units')

elif event.x < 0.1*w:

self.canvas.xview_scroll(-1, 'units')

if event.y > 0.9*h:

self.canvas.yview_scroll(1, 'units')

elif event.y < 0.1*h:

self.canvas.yview_scroll(-1, 'units')

因此,代码中实现的所有内容都变为:

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/bofangqi/article-307706-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonTkinter中,要实现刷新数据的功能,可以使用Tkinter自带的after函数。这个函数可以设定定时执行某个任务的时间。通过调用after函数,可以在指定的时间间隔内刷新数据。这样,在Tkinter的主循环(mainloop)执行期间,可以定时更新界面上的控件数据。 具体实现时,可以先定义一个刷新数据的函数,然后在调用mainloop函数之前,将这个刷新数据函数通过after函数进行定时调用。这样,每当定时器触发时,刷新数据函数就会被执行一次,从而实现数据的刷新。以下是一个示例代码: ```python import tkinter as tk def refresh_data(): # 在这里更新需要刷新的数据 # 例如,可以更新标签的文本信息或者重新绘制画布等 # 通过递归调用,实现定时刷新数据 root.after(1000, refresh_data) # 这里的1000表示刷新数据的时间间隔,单位为毫秒 # 创建主窗口 root = tk.Tk() # 在调用mainloop函数之前,将刷新数据函数调用一次 refresh_data() # 进入主循环,监听事件 root.mainloop() ``` 在上述示例代码中,refresh_data函数用于更新需要刷新的数据。在函数的最后,通过递归调用after函数,实现定时刷新数据的功能。这里的时间间隔设定为1000毫秒,即每隔1秒刷新一次数据。可以根据实际需求调整刷新的时间间隔。 这样,在Tkinter的主循环执行期间,refresh_data函数会被定时调用,从而实现了数据的刷新功能。通过在refresh_data函数中更新需要刷新的数据,可以实时显示最新的数据信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值