我正在尝试制作一个带有窗口和菜单的 Windows 模拟器(或者我想我这样做了),最近我使用拖放系统来移动标签(我的大多数小部件都是,我避免使用画布,因为它们有些困难: | ),所以我假装我移动了窗口,现在,问题是由于某种奇怪的原因,我拖动的标签闪烁,或者没有用鼠标正确移动,这是一个例子
我曾尝试使用update_idletasks()
拖放功能..但这几乎不能解决我的问题..因为在它闪烁并且窗口未正确显示之前..现在它在拖动时正确显示但它闪烁
窗口是一个带有我移动图像的标签,它位于另一个标签中,即壁纸,我试图将其更改为画布......但显然它仍然是同样的问题
这是该系统的代码和窗口的代码:
#desktop background code
Wallpaper = "BlissHill"
Background_image = tk.PhotoImage(file="Assets/Wallpapers/" + Wallpaper + ".png")
Background_label = tk.Label(Ventana, image=Background_image)
Background_label.place(x=-1, y=-1, relwidth=1, relheight=1)
# Drag and drop function
def make_draggable(widget):
widget.bind("<Button-1>", on_drag_start)
widget.bind("<B1-Motion>", on_drag_motion)
def on_drag_start(event):
widget = event.widget
widget.update_idletasks()
widget._drag_start_x = event.x
widget._drag_start_y = event.y
def on_drag_motion(event):
widget = event.widget
x = widget.winfo_x() - widget._drag_start_x + event.x
y = widget.winfo_y() - widget._drag_start_y + event.y
widget.update_idletasks()
widget.place(x=x, y=y)
# File manager (template)
FileManager_Texture = tk.PhotoImage(file="Assets/FileManager.png")
FileManagerMenu = Label(
Background_label,
width=687,
height=374,
bg="black",
image=FileManager_Texture,
borderwidth="0",
)
FileManagerMenu.place(x=1512, y=1512) # initial position before pressing the button
make_draggable(FileManagerMenu)
完整的代码太多了,不能放在这里