问题描述
我在 python 3.9 中使用 tkinter 8.6。我想在窗口中创建一些画布,并使它们能够通过单击和拖动来移动。通过阅读其他帖子,我在下面编写了代码(这是一个可重现的简单示例):
from tkinter import *
class MyClass:
def __init__(self,master=None):
self.master = master
self.canvas = Canvas(master,bg="green",width=380,height=100)
self.rectangle = self.canvas.create_rectangle(
120,40,140,60,fill="black")
self.canvas.bind("<ButtonPress-1>",self.scroll_start)
self.canvas.bind("<B1-Motion>",self.scroll_move)
self.canvas.place(x=100,y=100)
def scroll_start(self,event):
self.canvas.scan_mark(event.x,event.y)
def scroll_move(self,event):
self.canvas.scan_dragto(event.x,event.y,gain=1)
if __name__ == "__main__":
master = Tk()
master.geometry("800x300")
my_class = MyClass(master)
mainloop()
但它只是使画布中的内容可滚动(移动)而不是整个画布(我希望用户能够通过单击和拖动来更改绿色矩形及其内容(此处为黑色矩形)的位置。
如何将整个画布及其对象一起移动?
我也试过这个代码:
from tkinter import *
class MyClass:
def __init__(self,fill="black")
self.canvas.bind("<B1-Motion>",self.move)
self.canvas.place(x=100,y=100)
def move(self,event):
self.canvas.place(x=event.x,y=event.y)
if __name__ == "__main__":
master = Tk()
master.geometry("800x300")
my_class = MyClass(master)
print(TkVersion)
mainloop()
它使移动画布成为可能,但运动非常生涩和不稳定。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)